我有一个 .exe 文件,我想将其安装在大量 Windows Server 2008 计算机上。我正在尝试使用 Powershell 远程处理。我有这个可以在本地运行的命令:
invoke-command {& "N:\Temp\fortify_installer\HP-Fortify-3.20-Analyzers_and_Apps-Windows-x86.exe /s /f1N:\Temp\fortify_installer\response.iss"}
但是当我添加-computername
标志时,它似乎无处可去,并且安装程序从未在远程机器上运行。
我可以notepad.exe
通过相同的命令启动它并运行。这是否与它是安装程序有关,还是其他原因?我知道这个问题已经被问过很多版本,我也读过它们,但我仍然不明白为什么它不起作用。
答案1
Invoke 命令要求远程计算机配置为远程管理。运行远程命令
如果您无法配置远程管理,您可以使用 Windows 管理规范 (WMI) 进行远程执行。 使用 PowerShell 在远程计算机上执行程序
答案2
我假设脚本块中的命令是正确的。Invoke 命令是否完成,还是必须终止该命令?尝试该命令并将结果返回到变量,如下所示:
$var = Invoke-Command -ComputerName <Computer> -ScriptBlock {& "N:\Temp\fortify_installer\HP-Fortify-3.20-Analyzers_and_Apps-Windows-x86.exe /s /f1N:\Temp\fortify_installer\response.iss"}
一切看起来都很好,除了我想添加 -scriptblock 参数以使其更清晰。尝试将脚本块中的内容放入 .PS1 文件中,然后使用 -filepath 参数以及刚创建的 ps1 脚本的位置。
这很可能是一个交互式会话问题,但您的调用命令的结果应该会告诉您这个问题。否则,您可能需要查看该远程计算机上的事件日志,看看是否有任何内容出现。
答案3
您能否尝试以下操作:
输入 pssession 检查你的远程配置是否有效
将 exe 从 N:(我假设这是服务器上的映射驱动器)复制到 C: 或某个本地磁盘,然后在调整路径后再次运行脚本?双跳身份验证很有可能会干扰您的脚本。