我正在尝试调用位于本地计算机上的批处理文件,从远程计算机执行以下PowerShell命令。
Invoke-Command -ComputerName XXXXXX -ScriptBlock {
Start-Process "c:\installagent.bat"
} -Credential abc\XXX
它没有发出任何错误,但远程计算机上没有任何错误。
如果我从本地计算机运行批处理文件,它可以正常工作。
答案 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