-->

加盟WQL / SCCM两个表(Joining two tables in WQL/SCCM)

2019-09-23 00:18发布

我想我是真的傻在这里。

我使用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 - 如果他们甚至是表? 还是我必须有一个嵌套查询? 或者是有两个表中返回数据的另一种方式?

Answer 1:

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

创建从旧属性的新实例



Answer 2:

WQL语言只是SQL的一个子集,并且不支持JOIN语句,而是可以使用ASSOCIATORS OF在某些情况下。



Answer 3:

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


Answer 4:

我不得不尝试使用JOIN在我的PowerShell SCCM / CONFIGMANAGER查询语句时,类似的问题,并发现这是一个很好的解决方案:

https://gallery.technet.microsoft.com/scriptcenter/SCCM-2012-WMI-query-with-0daea30c#content

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



文章来源: Joining two tables in WQL/SCCM