我目前正在使用Power
shell脚本在我管理的几台
Windows Server 2008 R2服务器上远程运行一些Microsoft Hotfix安装程序.基本上,脚本将所有相应的文件复制到服务器,然后通过Invoke-Command运行安装程序,如下所示:
function InstallCU { Write-Host "Installing June 2013 CU..." Invoke-Command -ComputerName $ServerName -ScriptBlock { Start-Process "c:\aaa\prjcusp2\ubersrvprj2010-kb2817530-fullfile-x64-glb.exe" -ArgumentList "/passive" } }
如果我在服务器上本地运行“Start-Process”命令,则安装程序会正常运行.但是,当尝试远程运行时,没有任何反应(实际上,我可以看到安装程序在任务管理器中启动,但它会在几秒后关闭并且不会运行).
我试图给出Invoke-Command -Credentials,我已经关闭了服务器上的UAC,并且我确保我的WinRM设置(运行’winrm quickconfig’并将TrustedHosts设置为*)是正确的.我也尝试让Invoke-Command脚本运行本地Powershell脚本来运行安装程序并将Argument从’/ passive’更改为’quiet'(如果它无法远程启动具有UI的东西),但是再次,没有骰子.
还有什么我可以尝试的,或者我只是不能做到这一点?
好吧,我觉得有点惭愧,但我弄清楚我做错了什么.基本上,我需要将-Wait param添加到Start-Process cmdlet.最终代码如下所示:
function InstallCU { Write-Host "Installing June 2013 CU..." Invoke-Command -ComputerName $ServerName -ScriptBlock { Start-Process "c:\aaa\prjcusp2\ubersrvprj2010-kb2817530-fullfile-x64-glb.exe" -ArgumentList "/passive" -Wait } }