2

私はここで本当に愚かだと思います。

私はvbscriptを使用しています。SCCMサーバーに接続しました

Set locator = CreateObject("WbemScripting.SWbemLocator")
Set connection  = locator.ConnectServer("SERVERNAME", "Root\SMS\SITENAME")

次に、WMIWQLクエリがあります。

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の理解にはギャップがあると思います。このクエリでこれら2つのWQL「テーブル」を結合できるようですが、SMS_ClientAdvertisementStatusからのみ値を返すことができます。

参加したテーブルであるSMS_Advertisementから何かを返そうとすると、エラーが発生します。

WQLの「テーブル」に参加できますか?テーブルであっても参加できますか?または、ネストされたクエリが必要ですか?または、2つのテーブルからデータを返す別の方法はありますか?

4

4 に答える 4

1

WQLはJOINをサポートしていませんが、MOFを使用して、複数のクラスからのデータを含むWMIクラスを定義できます。ここを参照してください:

古いプロパティから新しいインスタンスを作成する

于 2012-09-25T18:12:54.443 に答える
0

このWQL言語はSQLのサブセットにすぎず、JOINステートメントをサポートしていません。代わりに、ASSOCIATORS OF場合によってはを使用できます。

于 2012-09-25T14:19:10.610 に答える
0

WQLは結合をサポートしています。これは、コレクション名と一致するデバイスの名前を一覧表示するサンプルの作業クエリです。SCCM2012で動作します。

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 に答える