[英]Joining two tables in WQL/SCCM
我想我在这里真的很愚蠢。
我正在使用vbscript。 我已连接到SCCM服务器
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set connection = locator.ConnectServer("SERVERNAME", "Root\SMS\SITENAME")
然后,我有一个WMI WQL查询:
Set Collections = connection.ExecQuery("SELECT LastStatusTime,AdvertisementID,
LastStateName,AdvertisementName
FROM SMS_ClientAdvertisementStatus
INNER JOIN SMS_Advertisement
ON SMS_Advertisement.AdvertisementID = SMS_ClientAdvertisementStatus.AdvertisementID
WHERE LastStateName = 'Succeeded'
AND LastStatusTime > '2012-09-25'")
FOR each Collection in Collections
Collection.LastStatusTime
Collection.AdvertisementID
Next
我认为我对WQL的理解存在差距。 我似乎能够在此查询中加入这两个WQL“表”,但是我只能从SMS_ClientAdvertisementStatus返回值。
如果我尝试从SMS_Advertisement中返回任何内容(已加入的表),则会收到错误消息。
您是否可以在WQL中加入“表”-如果它们甚至是表? 还是我必须有一个嵌套查询? 还是有另一种方法从两个表返回数据?
WQL不支持JOIN,但是您可以使用MOF定义包含多个类数据的WMI类。 看这里:
WQL
语言只是SQL的一个子集,不支持JOIN语句,而是在某些情况下可以使用ASSOCIATORS OF
。
WQL确实支持联接。 这是一个示例工作查询,其中列出了与集合名称匹配的设备的名称。 在SCCM 2012中工作。
select SMS_R_SYSTEM.Name from SMS_R_System inner join SMS_Collection as Systems on Systems.Name = SMS_R_System.Name
尝试在PowerShell SCCM / ConfigManager查询中使用JOIN语句时遇到类似的问题,发现这是一个很好的解决方案:
https://gallery.technet.microsoft.com/scriptcenter/SCCM-2012-WMI-query-with-0daea30c#content
我相信这些方法也可以翻译成其他语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.