GPO 软件安装是否会重新安装来自不同策略的已安装的应用程序?

GPO 软件安装是否会重新安装来自不同策略的已安装的应用程序?

我希望通过 GPO 软件安装策略安装我们最新的 AV 套件。(如下面的屏幕截图所示。)

在此处输入图片描述

不幸的是,我使用 DFS 的请求被拒绝了,我需要为我们环境中的每个站点创建一个 GPO(每个站点都是自己的子网)。我遇到的问题是,许多用户在站点之间移动,因此当他们移动到另一个站点时,他们将获得新的 GPO,并超出以前的 GPO 的范围。

我找不到任何具体的文档来说明如果应用程序已存在于当前 PC 上,GPO 软件安装是否会重新安装该应用程序。当计算机超出范围时,我将使用退出应用程序的选项。

从我的研究中,我发现仅当 GPO 的版本发生变化时,GPO 才会适用,这很好,但是实际的 MSI 呢?

我发现了两种人们提出但无法支持的情况:

  1. GPO 调用 Windows Installer 服务来检查已安装程序列表,并且仅当当前 MSI 版本不存在时才会安装。

  2. GPO 安装使用自己的软件列表保留自己的 APP 缓存,如果应用程序不在该列表中,即使已经安装,也会安装该应用程序。

有人能帮我确认一下正确的信息吗?

编辑:感谢大家的回复,我知道部署软件的其他替代方法,但我想要的是一个具体的答案,即如果工作站上已经存在包,GPO 部署是否会重新安装该包。

答案1

当我过去必须这样做的时候,我避免使用软件安装 GPO,因为它们有局限性并且引起的问题和它们解决的问题一样多。

编辑:针对您的编辑,是的,软件安装 GPO 可以并且将重新安装已安装的软件。(这是它们造成的问题之一 - 但远非唯一问题。)在您的场景中,如果您选择使用软件安装 GPO,则必须进行一些工作来防止这种情况,例如Greg 回答中的建议

当我必须使用 GPO 来安装软件时,我过去的做法是使用 GPO 来启动脚本安装,检查以确保该软件尚未安装。请参阅下面的示例,了解如何安装 PC*Miler26不寒而栗对于一堆 XP 机器。

屏幕截图显示启动脚本 GPO 指向我们公司 DFS 上的一个位置(我已将其删除),并且脚本本身是一个 bat 文件,由于我们环境的限制 - XP 机器和 WMI 在我们的客户端上经常出现故障,这是唯一可靠运行的东西。

在此处输入图片描述

echo off
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\ALK Technologies\PC*Miler 26.0"
if %errorlevel%==1 (goto Install) else (goto End)

REM If errorlevel returns a value of 1, it means the key is not present, thus the program is not installed.  So install it.
:Install
\\[Our DFS software share]\PCMiler26\Network\setup.exe /s

REM If errorlevel returns a value other than 1, the key is present, and the program is already installed, or something odd's going on.  No installation.

:End

答案2

如果是不同的 GPO,它可能会尝试重新安装。它是否真的完成重新安装取决于软件包。软件安装 GPO 有许多限制,并不是部署应用程序最灵活的方法。只有在没有像 BigFix 或 SCCM 这样的实际部署解决方案时才应该使用它。

您可以通过创建过滤器来指定组策略首选项,以查找指示应用程序是否已安装的标签来解决此问题。例如,如果 ntrtscan 服务不存在。

更多信息请点击这里:

http://evilgpo.blogspot.com/2012/05/inverting-wmi-filters.html

请注意底部的示例。您将为不存在的服务创建项目级定位过滤器。

答案3

我知道这有点老了,但我正在研究与此相关的一些事情,并想分享我的经验。

这取决于您如何分配应用程序。此外,GPO 应用的应用程序大多不好。在我的测试中,我通过计算机分配它(2012 R2 域到 Win7 计算机,使用 Kaspersky MSI 测试)。

为了测试,我复制了部署 MSI 的 GPO,并将其应用于之前链接的 OU。我运行了 gpupdate /force,但系统未提示我重新启动计算机(这意味着未对计算机应用任何更改)。为了确认 GPO 已应用,运行了 gpresult /R,并确认 Copy_of_GPO 已应用。为了仔细检查 GPO 如何处理安装程序,我查找了注册表中的内容。“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt\”(感谢通过组策略分配软件 - 客户端如何知道软件包是否已安装) COPY_of_GPO 的 GPO GUID 出现在 GPO 中。产品 ID 的单个实例位于 AppMgmt 下,并将初始 GPO GUID 作为其源 GPO。

出现问题的地方;假设您随后取消链接任一 GPO。由于不再应用应用 MSI 的 GPO,因此将删除 MSI。即使其他 GPO 已分配它。这个问题很重要,因为显然在应用设置之前会枚举应用的 GPOS(这就是为什么如果您使用多个 GPO 分配多个程序,它们都会同时安装)。如果处理并删除应用软件的 GPO,则会产生(失败)竞争条件。GPO GUID 存在,但它包含的 PKG GUID 不存在。

AV 的情况更糟,因为它在 Windows 安装/卸载时会出现问题。事实上,卡巴斯基甚至有一个独立的卸载程序来删除他们自己的客户端。AV 不喜欢消失。

如果 MSI 设置不当,情况会变得更加复杂。

TL:DR 不要通过 GPO 使用分配的应用程序,尤其是使用 AV 时。

扩展阅读: https://msdn.microsoft.com/en-us/library/cc782152%28v=ws.10%29.aspx

相关内容