繁体   English   中英

在WQL / SCCM中联接两个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM