Join 在WQL/SCCM中连接两个表

Join 在WQL/SCCM中连接两个表,join,vbscript,wmi,wql,sccm,Join,Vbscript,Wmi,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

我觉得我在这里真的很蠢

我正在使用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_广告(我加入的表)返回任何内容,我只会得到一个错误


你能在WQL中连接“表”吗?如果它们是表的话?或者我必须有一个嵌套查询?或者有其他方法从两个表返回数据吗?

该语言只是SQL的一个子集,不支持JOIN语句,在某些情况下可以使用

WQL不支持联接,但您可以使用MOF定义包含来自多个类的数据的WMI类。请看这里:


WQL确实支持连接。下面是一个示例工作查询,其中列出了与集合名称匹配的设备的名称。2012年在SCCM工作

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语句时,我遇到了类似的问题,并发现这是一个很好的解决方案:


我相信这些方法也可以翻译成其他语言

这是不正确的,WQL不支持联接。请参阅这里的WQL支持的运算符列表。在这里发布之前,我测试了WQL查询。它确实有效。这个博客也谈到了它——为了清晰起见,它似乎增加了一些对连接的支持@verisimilitude@cogumel0你能用相关的资源/参考资料和一个实际例子来证明这一点吗?您可能能够执行查询而不会出现可见错误,但联接将无法工作。虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,则仅链接的答案可能无效。