【问题标题】:Installing interactive msi in Remote Machine with Powershell使用 Powershell 在远程机器中安装交互式 msi
【发布时间】:2018-12-29 02:38:45
【问题描述】:

我的远程计算机中有一个 .msi 文件,该文件与本地计算机位于不同的域中。我可以使用 powershell 连接到远程机器,但是如何在那里安装 msi。安装过程有很多输入要给出,同时按下“下一步”,然后再次给出特定的输入和单选按钮等等。因此,它是一个交互式装置。在我的本地,我可以使用 [System.Windows.Forms.SendKeys] 来模仿键盘输入,但由于该进程将在远程机器的后台运行,我认为 SendKeys 不会起作用。 'psexec' 在这里不是一个选项,因为在我的远程机器中,我的 Powershell 不能包含 PSTools。有没有办法用 Invoke-Command 和 -ArgumentList 做到这一点??

如果有办法,那么我该如何选择是在特定字段中输入文本还是单击下一步按钮或单击应用程序窗口中的任何其他按钮??

【问题讨论】:

  • 看看这个问题Silent installation of a MSI package的答案。您需要找到 msi 导出的公共属性。
  • 感谢您的链接。我浏览了它并使用 Orca 查找与 msi 关联的所有属性。但是那里没有提到 msi 中的一些输入字段。在 msiexec 命令期间,是否有任何其他表我必须将它们设置为命令行参数? @Theo
  • 也许你可以试试lessmsi
  • lessmsi 给了我与 Orca 相同的数据。有一些输入字段默认为空,我必须在安装过程中将数据放入其中。但是这些字段的属性名称并未在 Orca 和 lessmsi 的属性表中列出。我在这里错过了什么吗? @Theo
  • 那么也许@JohnHeese 的回答可以帮到你。Determine if MSI/EXE supports certain flag/argument

标签: powershell powershell-remoting


【解决方案1】:

我终于在名为 AutoIt 的自动化工具的帮助下解决了这个难题。该工具有自己的脚本语言,可以创建 .exe 文件来运行特定的应用程序,并根据应用程序安装程序弹出的每个连续窗口执行相应的安装步骤。创建 .exe 后,我使用 Copy-Item 将其复制到远程计算机,或者您可以使用 robocopy,然后在 psexec 的帮助下远程调用 .exe。正如我之前对 psexec 的误解,它只需要在本地与 powershell 集成,因此它会自动创建自己的会话并与远程机器交互。这是在远程机器上运行 .exe 的命令:-

psexec -i 2 -s -d \\remote_machine_name -u Username -p Password C:\Path_to_exe\installer.exe

您实际上可以登录到远程计算机并在 GUI 中看到它正在发生。是的,显然您需要将被调用的 .msi 存在于远程计算机中,以便 .exe 可以在远程会话中本地完成其工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2021-04-17
    相关资源
    最近更新 更多