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