我有一个脚本,它遍历 Active Directory OU 中的所有工作站,并从每台机器中提取软件数据。
我找到了两个给我这个数据的类:
Win32_Product
Win32_InstalledWin32Program
后者是更完整的列表,因为据我了解,
编辑:了解到查询 Win32_Product 会触发它查询的每个软件的一致性检查,如果发现错误可能会重新安装程序。将完全取消 Win32_Product,并感谢任何神力,我没有重新安装一些关键的生产工具。
https://support.microsoft.com/en-ca/help/974524/event-log-message-indicates-that-the-windows-installer-reconfigured-alWin32_Product
仅显示通过 Windows 安装程序安装的应用程序,尽管后者不包含 InstallDate 属性。拥有一个 InstallDate 不如拥有一个完整列表那么重要,所以我一直在合并我的两个GWMI
命令的输出,并使用Sort-Object -Property Name -Unique
它来接近我正在寻找的内容。
无论出于何种原因,该Win32_InstalledWin32Program
课程在某些计算机上不可用,并且出现Get-WMIObject : Invalid Class
错误。在检查了Get-WMIObject
几台有问题的机器后,我可以确认我想要的课程不可用。为什么会出现这种情况,有没有办法让我可以使用它?我在文档中找不到有关依赖项的任何内容。所有机器都运行 Windows 7,请参见下面的屏幕截图。
$winProduct = GWMI Win32_Product -ComputerName $computer | Select-Object Name,Vendor,Version,InstallDate
# vvv This fails on certain machines.
$winPrograms = GWMI Win32_InstalledWin32Program -ComputerName $computer| Select-Object Name, Vendor, Version, InstallDate
$winProduct + $winPrograms | Sort-Object -Property Name -Unique | export-csv -path $targetSWfile -notype