从Powershell执行远程安静的MSI安装

时间:2012-02-09 23:04:25

标签: powershell windows-installer powershell-remoting

我正在尝试使用Invoke-Command powershell cmdlet来安装MSI安装程序。从本地计算机上的powershell和正确的目录中,以下工作:

./setup /quiet

以下似乎不起作用:

$script =
{
    param($path)
    cd "$path"
    & ./setup /quiet
    return pwd
}
return Invoke-Command -ComputerName $product.IPs -ScriptBlock $script -Args $sourcePath

出于测试目的,我正在处理传入“。”的本地机器。用于-ComputerName参数。在传递给Invoke-Command之前,路径已经过验证,并且在此代码的不同版本上生成的错误表明路径是正确的。我也在远程调用设置时尝试使用和不使用“&”。其他Invoke-Command调用正在运行,所以我怀疑这是一个权限问题。我已经验证了pwd调用的返回是预期的目录。

如何让安装工作?

2 个答案:

答案 0 :(得分:0)

您可以尝试在脚本块中使用Start-Process:

cd $ path start-process setup.exe -arg“/ quiet”

不确定您是否想要或需要等待。查看Start-Process的帮助。

答案 1 :(得分:0)

尝试在本地计算机上远程执行脚本时遇到了奇怪的问题。换句话说,远程PowerShell到本地机器。它回来时出现了一个错误,似乎说机器上没有启用PowerShell远程处理,但确实如此。我可以从另一台机器远程运行脚本到目标,但是当使用远程连接到同一个盒子时,问题就会出现。

  • 验证WinRM服务是否正在运行。
  • 验证PowerShell远程处理已启用,如Enable-PSRemoting -force
  • 例如,验证您的powershell执行政策是否足够宽松,如Set-ExecutionPolicy Unrestricted。如果策略设置为RemoteSigned,则可能是问题所在。

您可能还希望验证运行脚本的用户(本地,但使用远程处理)具有“作为服务登录”或批处理作业的权限。只是在那里猜测,如果上面的列表没有解决任何问题。