从Powershell执行远程静默MSI安装

utugiqy6  于 2022-12-18  发布在  Shell
关注(0)|答案(3)|浏览(295)

我正在尝试使用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之前,已验证路径是否正确,此代码的不同版本上生成的错误表明路径是否正确。我还尝试了在远程调用setup时使用和不使用“&“。其他Invoke-Command调用均正常工作。所以我怀疑这是一个权限问题。我已经验证了从pwd调用返回的是预期的目录。
如何让安装工作?

balp4ylt

balp4ylt1#

您收到了什么错误(如果有)?很遗憾,您必须在本地计算机上以admin身份运行shell,才能使用invoke-command或任何需要管理权限的基于WinRM的命令连接到本地计算机(远程连接时不需要此权限)。
当连接到loopback时,我认为它无法(出于某种安全原因)枚举组并确定您是否在一个启用了管理的AD或本地组中,这是它在远程计算机上调用时自动提升的方式。唯一的解决方案可能是有一个检查localhost的条件,如果是,请不要使用-ComputerName参数。
This GitHub Issue covers it

2vuwiymt

2vuwiymt2#

您可以尝试在脚本块中使用Start-Process:
cd $路径启动进程setup.exe -arg“/quiet”
不确定您是否希望或需要等待。请查看“启动进程”的帮助。

vm0i2vca

vm0i2vca3#

我在尝试在本地机器上远程执行脚本时遇到了奇怪的问题。换句话说,远程PowerShell到本地机器。它返回了一个错误,似乎是说PowerShell远程处理在机器上没有启用,但它是。我可以从另一台机器远程运行脚本到目标,但当使用远程处理到同一个机器时,这个问题突然出现。

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

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

相关问题