由于某种原因,在远程机器上通过调用命令运行时,Start-Process msiexec 将无法工作。我查了一下,虽然有些人建议使用 psiexec,但我看到很多人使用普通的旧调用命令在远程机器上启动 msi 安装程序。
这是我目前正在使用的代码:
$session = New-PSSession -computername $computerName -ea stop
$command = {
Param(
[Parameter()]
[string]$computerName,
[Parameter()]
[string]$domain,
[Parameter()]
[string]$user,
[Parameter()]
[string]$password,
[Parameter()]
[string]$installDir
)
$msiArgumentList = "/i C:\Installer.msi /l c:\log.txt /quiet /qr /norestart IAGREE=Yes DOMAIN=$domain ACCOUNT=$user PASSWORD=$password PASSWORDCONFIRM=$password INSTALLDIR=$installDir"
Start-Process msiexec -ArgumentList $msiArgumentList -Wait
}
Invoke-Command -session $session -ScriptBlock $command -ArgumentList $computerName, $domain, $user, $password, $installDir
Remove-PSsession -session $session
我使用相同的方法使用 intallutil 远程安装服务并且它有效。在目标机器上启用脚本以及远程处理,因此所有帐户都应该工作。两台计算机都有相同的凭据,但我仍然尝试将凭据添加到调用命令和 pssession。我在本地测试了代码并且安装工作正常。远程它没有,也没有任何错误。我可以在 taskmanager 中的目标机器上看到 msiexec 已启动,但没有任何反应。我什至尝试禁用防火墙,但仍然没有。我尝试了 & 运算符来启动 msiexec,但仍然没有。
不知道我还能尝试什么。