我正在尝试使用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调用返回的是预期的目录。
如何让安装工作?
3条答案
按热度按时间balp4ylt1#
您收到了什么错误(如果有)?很遗憾,您必须在本地计算机上以admin身份运行shell,才能使用invoke-command或任何需要管理权限的基于WinRM的命令连接到本地计算机(远程连接时不需要此权限)。
当连接到loopback时,我认为它无法(出于某种安全原因)枚举组并确定您是否在一个启用了管理的AD或本地组中,这是它在远程计算机上调用时自动提升的方式。唯一的解决方案可能是有一个检查localhost的条件,如果是,请不要使用
-ComputerName
参数。This GitHub Issue covers it
2vuwiymt2#
您可以尝试在脚本块中使用Start-Process:
cd $路径启动进程setup.exe -arg“/quiet”
不确定您是否希望或需要等待。请查看“启动进程”的帮助。
vm0i2vca3#
我在尝试在本地机器上远程执行脚本时遇到了奇怪的问题。换句话说,远程PowerShell到本地机器。它返回了一个错误,似乎是说PowerShell远程处理在机器上没有启用,但它是。我可以从另一台机器远程运行脚本到目标,但当使用远程处理到同一个机器时,这个问题突然出现。
Enable-PSRemoting -force
中所示。Set-ExecutionPolicy Unrestricted
,如果策略被设置为RemoteSigned
,这可能就是问题所在。你可能还想验证你运行脚本的用户(本地,但使用远程)是否有“作为服务登录”或作为批处理作业的权限,如果上面的列表没有解决任何问题,那就只是猜测。