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

如果我使用GPO分配软件,则假定客户端计算机将在下次重新启动时进行安装。 但是,如果没有真正去每个客户和检查我自己,我都不能确定。 有没有办法检查哪些客户端已经安装了软件(如使用WSUS)或者编写脚本来检查客户端已安装软件的版本?

GPO没有内置任何报告机制。任何体面的configurationpipe理软件都可以报告安装的内容,或者可以编写脚本。


警告由Microsoft推荐的以下代码存在严重问题。 请参阅下面的评论以及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”并行运行多个查询。

这个问题太笼统了,所以我最多可以给你指针。 想想你将如何确认安装。 例如,%programfiles%\ Company \ SoftwareXYZ \ abc.exe中是否存在文件,告诉你该应用程序已成功安装?

  • 它是一个registry键?
  • 有一些成功的关键日志文件?
  • 事件日志?

一旦你弄清楚了,你需要写一个脚本来检查它。

然后您需要在某处报告结果。 例如,您可以将COMPUTERNAME作为networking共享中的文件发布。 例如,batch file中的以下行可以这样做:

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

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