是否可以将应用程序推送到客户端电脑并使用 GPO 安装?
我目前在托管软件的域控制器上有一个网络共享,并且有一个 GPO 来将该软件安装在所有连接的 PC 上。问题是,这是否真的将软件复制到客户端机箱上,还是只是从网络共享运行?
如果仅从网络共享运行,是否可以将应用程序复制到本地文件系统并使用 GPO 从那里安装?
答案1
通过 GPO 进行软件部署非常有限且不可靠,因为您要部署的软件必须是 .msi 文件。它不适用于 .exe 或任何其他文件扩展名。
只要您在文件共享上拥有 .msi 文件,并且该文件共享可供要安装软件的所有计算机访问,则步骤如下:
注意:这实际上会将软件安装在计算机上。它将在本地计算机上运行,而不是从文件共享中运行。计算机基本上只是从网络共享中检索安装程序文件并在机器上安装应用程序。
创建一个新的组策略对象。
在计算机配置 > 策略 > 软件设置下单击软件安装以选择它。
右键点击右侧窗口的空白部分,选择New > Package
重要提示:下一步要小心。选择软件包时,您必须浏览到要安装软件的计算机可以访问的文件共享位置。如果您从服务器的本地 C: 驱动器中选择它,则网络计算机将无法访问安装程序文件,因为您必须使用目标计算机可以访问的网络共享 UNC 路径 (\\SERVER_NAME\share_name\installer_file_name)。
浏览到 UNC 路径并选择您的 .msi 安装程序文件。
选择“已分配”并选择确定。您的安装程序文件将出现在列表中。
接下来的步骤将取决于您的设置。您可能必须在 GPO 上设置安全过滤权限,以告诉它您希望它在哪些特定计算机上安装,并调整其他权限设置。完成后,将 GPO 分配给包含应安装软件的机器的 OU。
要测试,请转到网络上应安装该软件的计算机,打开 PowerShell 并运行
gpupdate /force /boot
您应该会收到一条消息,提示某些策略已启用……等等等等,然后弹出一个窗口,提示计算机将在 1 分钟后自动重启。计算机重启后,您可能会看到旋转的振动器持续很长时间,然后 Windows 才会加载。这通常是一个好兆头,表示软件正在安装。
但是,通过 GPO 进行部署并不是最可靠的解决方案。有很多原因会导致它失败(而且通常会失败)。在安装之前,您可能需要重新启动计算机几次。它可能几天都无法安装,甚至永远都无法安装。有时您必须删除 GPO 并重新创建它才能安装它。在最坏的情况下,您必须从域中删除计算机,然后在软件安装之前重新加入域。
答案2
我能够开始工作的方法是创建两个新的 GPO:一个用于复制 MSI,另一个用于复制Start-Process C:\Path\to\MSI
从网络共享运行到客户端 PC 的 powershell 脚本。
第二个 GPO 运行一项立即任务来启动 powershell 并传递参数来运行 MSI。
与包装专业人士交谈后,这种技术似乎是最佳实践。
我意识到我可能用 powershell 脚本把这个弄得太复杂了。你可以设置一个立即任务来运行应用程序,或者使用正则表达式运行一次。