【问题标题】:Invoke-Command with script block is not working on remote machine with no error带有脚本块的 Invoke-Command 在远程机器上不起作用且没有错误
【发布时间】:2015-07-08 05:57:36
【问题描述】:

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

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

它没有给出任何错误,但远程计算机上什么也没发生。

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

【问题讨论】:

    标签: powershell powershell-remoting


    【解决方案1】:

    您不能像这样在远程主机上运行本地文件。如果帐户 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
    

    【讨论】:

      猜你喜欢
      • 2022-07-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多