无法使用PowerShell脚本远程执行包含重定向/超时的批处理文件

时间:2018-08-29 18:05:11

标签: powershell batch-file timeout

这是我的PS脚本(打算从Computer1在Computer2上远程运行)。

Start-Transcript -path \\SomeFiler\Apps\Merrick\logs\max_allocation_output\$(Get-Date -Format yyyymmdd_hhmmtt).txt
$statistic = (Get-Process -Name alloc -ComputerName computer2).Count
Write-Host "Allocation Count is $statistic"
if ($statistic -gt 1)
{
    (Taskkill /S computer2 /im alloc.exe /f)
    Start-Process C:\ProgramData\Merrick\Allocations.bat -ComputerName computer2
}

使用上述方法,所有操作都可以远程运行(例如,在Computer2上远程杀死Alloc进程),但最后一行除外-这是启动“ .bat”文件的地方,在此我得到以下错误:

  

“找不到与参数名称匹配的参数   “计算机名”

(这告诉我Start-Process不能在远程工作,所以我去了Invoke-Command看看效果更好,所以我用Invoke-Command代替了最后一行:< / p>

Invoke-Command -ComputerName "Computer2" -ScriptBlock {
    Invoke-Expression -Command:"cmd.exe /c 'C:\ProgramData\Merrick\Allocations.bat'"
} 

然后我得到一个错误

  

“不支持输入重定向。”

,我看到该批处理文件正在尝试执行,但每次中断都会失败。

下面是实际批处理文件的内容,我必须在上面的PowerShell文件中的Computer1上的Computer2上远程运行该文件:

c:
cd \ProgramData\Merrick\
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe auto2
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe pumper
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request1
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request2
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request3
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request4
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request5
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request6
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request7
timeout /t 30 /nobreak
start /D "D:\ProCount\Allocations" alloc.exe request8
exit 

因此问题不在于PowerShell文件或批处理文件,而是试图找出如何在Computer1上运行PS文件,其中包含一个批处理文件,以在所有这些超时重定向下在Computer2上远程运行。 / p>

注意:我可以运行一个简单的PS脚本(Start-Process C:\ProgramData\Merrick\Allocations.bat) 在实际服务器2上的本地服务器上-CMD启动,所有东西都变得肉汁!但是我需要能够从OpenBatch之类的工具或登台服务器的任务计划程序等远程运行此文件。

0 个答案:

没有答案