$storesess = New-PSSession -ComputerName marshy -Credential marshy001
Enter-PSSession -Session $storesess
Invoke-Command -ScriptBlock {start-process C:\Users\marshmellow\Documents\Some\xyz.bat }
Exit-PSSession
上面是调用保存在远程服务器C:\ Users \ marshmellow \ Documents \ Some \ xyz.bat中的bat文件的脚本
bat文件有两个命令,一个命令使用“ pushd”设置工作目录,另一个停止应用程序进程。第二个命令需要几分钟才能完成。我发现Start-Process
不会等待第二条命令成功完成,它只会触发命令并关闭进程。
有什么方法可以使启动过程等待命令成功完成,因为我已经尝试过使用-Wait
了,但该方法不起作用。
[如果有办法甚至在远程服务器上打开cmd会话并在其中传递保存在变量中的少量命令,并且该输出会中继到我的PowerShell脚本,即使这样也很好。谁能帮忙吗?
使用cmd.exe可能有用吗?
Invoke-Command -ScriptBlock {
cmd /k "C:\Users\marshmellow\Documents\Some\xyz.bat"
} -ErrorAction Stop
如果没有,则可以在cmd.exe上输入Start-Process -Wait
,然后将批处理命令作为-ArgumentList
提供
如果尝试此操作,您会得到什么?
Invoke-Command -FilePath $PathToBatchFile
您不需要Invoke-Command
cmdlet。只需将Start-Process
与-Wait
参数一起使用,并将正确的参数传递给cmd:
$storesess = New-PSSession -ComputerName marshy -Credential marshy001
Enter-PSSession -Session $storesess
Start-Process cmd -ArgumentList "/C C:\Users\marshmellow\Documents\Some\xyz.bat" -Wait
Exit-PSSession