【问题标题】:Joining two tables in WQL/SCCM在 WQL/SCCM 中连接两个表
【发布时间】:2012-09-25 13:04:49
【问题描述】:

我觉得我在这里真的很愚蠢。

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

【问题讨论】:

    标签: join vbscript wmi wql sccm


    【解决方案1】:

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

    Creating a New Instance from Old Properties

    【讨论】:

    • @cogumel0 你能用相关的资源/参考和一个实际的例子来证明它吗?您可能能够在没有明显错误的情况下执行查询,但连接将不起作用。
    【解决方案2】:

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

    【讨论】:

      【解决方案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
      

      【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      猜你喜欢
      • 2018-09-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2023-04-09
      • 1970-01-01
      • 2018-06-30
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多