如果我使用 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 中的启动脚本。