这是我的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之类的工具或登台服务器的任务计划程序等远程运行此文件。