Powershell Invoke-Command的问题

时间:2014-08-20 14:27:50

标签: windows powershell powershell-v3.0

我正在尝试使用PowerShell在远程服务器上安装应用程序。这是我正在使用的脚本:

  

$ cred = Get-Credential
  $ s = New-PSSession -ComputerName $ ServerName -Credential $ cred

     

Invoke-Command -Session $ s -ScriptBlock {Start-Process -FilePath" c:\ windows \ system32 \ msiexec.exe" -ArgumentList" / i \\ computer \ e $ \ installer.msi / qn" -Wait}

     

Remove-PSSession -ComputerName $ ServerName

如果我直接在远程计算机上运行以下命令,它会很好地执行:

  

Start-Process -FilePath" c:\ windows \ system32 \ msiexec.exe" -ArgumentList" / i \\ computer \ e $ \ installer.msi / qn" -Wait

但是当我作为Invoke-Command的一部分远程运行时,PS会话打开,脚本运行,msiexec在远程计算机上启动,然后PS会话关闭但应用程序永远不会安装,msiexec永远不会关闭。

任何帮助都将不胜感激。

谢谢,

扎克

1 个答案:

答案 0 :(得分:3)

您需要先在本地复制软件包。 一旦开始远程连接,就不能再进行UNC了。

目的地可以是服务器/计算机上的任何位置。 我使用温度,但不管你喜欢什么 另外,我喜欢使用$ env:windir \ temp,以防万一。

    Copy-item "\\servershare\File.msi" -conatiner -recurse `
               \\$Computer\c$\windows\temp\

    Invoke-Command -Computername $Computer -credential $cred -ScriptBlock {
        Start-Process -FilePath `
        "c:\windows\system32\msiexec.exe" `
        -ArgumentList "/i `
        \\computer\e$\installer.msi /qn" -Wait
        }

我希望它有所帮助。