首先,抱歉我的英语不好。我是 vbs 脚本和 wmi 查询方面的新手,需要您的帮助。
我的目标是获取特定计算机的添加/删除程序列表。我看到许多脚本查询目标计算机上的卸载注册表项,但我想即使计算机处于离线状态也能执行此操作。这就是我查询 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。你能帮忙吗?
答案1
您正在尝试使用 SQL 查询从 CM07/CM12 获取结果。您需要使用 WQL 来查询 CM07/CM12。将您的查询转换为 WQL,它应该可以工作,或者重写您的 VBS 以直接查询 SQL。