查询SCCM服务器以获取特定计算机的“添加/删除程序”列表

首先,我很抱歉我的英语。 我是vbs脚本和wmi查询的新手,我需要你的帮助。

我的目标是获取特定计算机的“添加/删除程序”列表。 我看到很多脚本查询目标计算机上的“卸载”registry项,但是即使计算机处于脱机状态,也要执行此操作。 这就是为什么我查询SCCM服务器。

我的查询似乎是好的,因为当我把它放在报表生成器,它会返回一个好结果。

这是查询:

Select sys.Name0,adv.DisplayName0 FROM v_R_System sys , v_Add_Remove_Programs adv where sys.ResourceID=adv.ResourceID and sys.Name0 like '%XXXXXXXX%' 

我的问题是使用VBScript的查询结果。 我收到“For Each”行的错误

这是我的脚本:

 'Central SCCM Site Server name strComputer = "SCCM_SERVER" 'Central SCCM Site Code strSiteCode = "DC1" 'Set up the connection String Set objWMIService = GetObject("winmgmts://" & strComputer & "\root\sms\site_" & strSiteCode) 'Get the info with a query Set colGroups = objWMIService.ExecQuery("Select sys.Name0,adv.DisplayName0 FROM v_R_System sys , v_Add_Remove_Programs adv where sys.ResourceID=adv.ResourceID and sys.Name0 like 'XXXXXXXXXXX'") 'output the info For Each objGroup in colGroups Wscript.echo objGroup.DisplayName0 & " - " Next 

你能给我一些帮助吗?

更新:似乎我没有使用正确的语言进行查询。 我正在使用SQL而不是WQL。

我不知道如何将我的查询翻译成WQL。 你能帮忙吗?

您正尝试使用SQL查询从CM07 / CM12获取结果。 您需要使用WQL来查询CM07 / CM12。 将你的查询翻译成WQL,它应该工作或者重写你的VBS来直接查询SQL。