2

我想我在这里真的很愚蠢。

我正在使用 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 中的“表格”吗?即使它们是表格?还是我必须有一个嵌套查询?还是有另一种从两个表返回数据的方法?

4

4 回答 4

1

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

从旧属性创建新实例

于 2012-09-25T18:12:54.443 回答
0

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

于 2012-09-25T14:19:10.610 回答
0

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
于 2014-11-24T06:58:02.107 回答
0

在我的 PowerShell SCCM / ConfigManager 查询中尝试使用 JOIN 语句时,我遇到了类似的问题,发现这是一个很好的解决方案:

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

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

于 2017-11-05T22:43:13.617 回答