2012-09-25 75 views
1

我想我在這裏真的很愚蠢。在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中連接「表」嗎?如果它們甚至是表?或者我必須有一個嵌套的查詢?還是有另一種方法從兩個表中返回數據?

回答

-1

WQL不支持JOIN,但可以使用MOF定義包含來自多個類的數據的WMI類。在這裏看到:

Creating a New Instance from Old Properties

+0

這是不正確的,在WQL中支持連接。 – cogumel0

+0

@ cogumel0你能用相關的資源/參考和一個實際的例子來證明嗎?您可能能夠執行查詢而不會顯示錯誤,但連接將無法工作。 –

0

WQL語言只是SQL的一個子集,不支持JOIN語句,在某些情況下可以使用ASSOCIATORS OF

0

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 
+0

這是不正確的,WQL不支持連接。請參閱WQL支持的運算符列表https://msdn.microsoft.com/zh-cn/library/aa394606(v=vs.85).aspx – verisimilitude

+0

在發佈之前,我測試了WQL查詢。它確實有效。這個博客也談到它 - https://social.technet.microsoft.com/wiki/contents/articles/12050.example-wql-queries-for-configuration-manager.aspx –

0

我不得不嘗試使用JOIN在我的PowerShell SCCM/CONFIGMANAGER查詢語句時,類似的問題,並發現這是一個很好的解決方案:

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

我相信該方法也可以翻譯成其他語言。

+0

雖然這個鏈接可能回答這個問題,但它最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Nik