2

我正在尝试使用 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 调用的返回是预期的目录。

如何让安装工作?

4

2 回答 2

0

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

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

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

于 2012-08-03T15:15:03.777 回答
0

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

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

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

于 2012-02-10T00:26:27.570 回答