有没有办法确定哪些客户端计算机已从 GPO 安装了软件?

有没有办法确定哪些客户端计算机已从 GPO 安装了软件?

如果我使用 GPO 分配软件,我假设客户端计算机将在下次重新启动时安装该软件。但是,如果不亲自检查每个客户端,我无法确定。有没有办法检查哪些客户端安装了该软件(例如使用 WSUS)或编写脚本来检查客户端上已安装软件的版本?

答案1

GPO 没有内置任何报告机制。任何像样的配置管理软件都可以报告已安装的内容,或者您​​可以编写脚本。


警告以下代码是微软推荐的,但存在严重问题。请参阅此答案下方的评论,其中包含 2009 年“快速发布”(即紧急情况)知识库文章的链接。


如果您使用的是较新的计算机(Vista/2008+),则可以使用 PowerShell:gwmi -comp computer_name Win32_Product获取已安装软件的列表。它返回如下信息:

IdentifyingNumber : {D11F66FF-82B3-DDB8-1146-525370552BE1}
Name              : Windows Software Development Kit for Windows Store Apps
Vendor            : Microsoft Corporation
Version           : 8.59.25584
Caption           : Windows Software Development Kit for Windows Store Apps

可以进一步编写脚本来生成安装了特定软件各个版本的计算机列表,导出到 CVS 或其他 ODBC 连接或各种任务...具体取决于您要查找的内容。这个过程有点慢,所以您可能想要考虑运行这个“-AsJob”来并行运行多个查询。

答案2

这个问题太笼统了,我最多只能给你一些提示。想想你会如何确认安装。例如,%programfiles%\Company\SoftwareXYZ\abc.exe 中存在文件是否意味着应用程序安装成功?

  • 它是一个注册表项吗?
  • 包含一些成功关键的日志文件?
  • 事件日志?

一旦您弄清楚了这一点,您将需要编写一个脚本来检查它。

然后您需要将结果报告到某个地方。例如,您可以将 COMPUTERNAME 作为文件发布到网络共享中。例如,批处理文件中的以下行可以执行此操作:

echo. > \\MyServer\MyShare\%COMPUTERNAME%_Success.txt

最后,您可以将该脚本添加为同一 GPO 中的启动脚本。

相关内容