带脚本块的Invoke-Command无法在远程计算机上运行且没有错误

时间:2015-07-06 17:09:24

标签: powershell powershell-remoting

我正在尝试调用位于本地计算机上的批处理文件,从远程计算机执行以下PowerShell命令。

Invoke-Command -ComputerName XXXXXX -ScriptBlock {
  Start-Process "c:\installagent.bat"
} -Credential abc\XXX

它没有发出任何错误,但远程计算机上没有任何错误。

如果我从本地计算机运行批处理文件,它可以正常工作。

1 个答案:

答案 0 :(得分:4)

您无法在此类远程主机上运行本地文件。如果帐户abc\XXX在您的本地计算机上具有管理员权限(并且启用了对管理共享的访问权限),您可以尝试这样做:

Invoke-Command -ComputerName XXXXXX -ScriptBlock {
  param($myhost)
  Start-Process "\\$myhost\c$\installagent.bat"
} -ArgumentList $env:COMPUTERNAME -Credential abc\XXX

否则,您必须先将脚本复制到远程主机:

Copy-Item 'C:\installagent.bat' '\\XXXXXX\C$'

Invoke-Command -ComputerName XXXXXX -ScriptBlock {
  Start-Process "c:\installagent.bat"
} -Credential abc\XXX

另外,我建议使用调用操作符(&)而不是Start-Process来运行批处理文件:

Invoke-Command -ComputerName XXXXXX -ScriptBlock {
  & "c:\installagent.bat"
} -Credential abc\XXX

那样Invoke-Command应该返回批处理文件的输出,让你更好地了解正在发生的事情。

或者,您只需使用psexec

C:\> psexec \\XXXXXX -u abc\XXX -c installagent.bat