注意 |
WQLSet要素は、 Windows Management Instrumentation WQLクエリステートメント。 WQLでは、SQLに似たクエリをさまざまなオブジェクトクラスに対して実行できます。その結果は、各行がオブジェクトを表し、各列がオブジェクトの特定の属性の値を表す行のテーブルを形成します。
注意多くのWMIクエリは、大量の時間とコンピュータリソースを消費します。完了までに数分かかり、数千行を返すクエリを誤って発行することは簡単です。すべてのクエリは、WQLSetで使用する前に、PowershellまたはWMIエクスプローラ。
|
属性
|
説明
|
必須
|
初期設定値
|
設定できる値
|
namespace
|
WMIクエリの名前空間を設定します。
|
はい
|
該当なし
|
有効なWMI名前空間を表す文字列値。 「root\\cimv2」名前空間は、Windowsオペレーティングシステムオブジェクトのクエリに最も一般的に使用されますが、「root\\directory\\LDAP」や「root\\Microsoft\\SqlServer\\ComputerManagement」などの名前空間も使用できます。参照こここれは、特定のコンピュータで使用可能なWMI名前空間を列挙するGetNamespaces.vbsという小さなスクリプトの例です。
|
wql
|
WQLクエリ文字列。
|
はい
|
該当なし
|
有効なWQL文字列。クエリには、返されるオブジェクトごとに__Path属性を含める必要があります。 Agentは、結果を保存およびレポートするときにエンティティキーとして__Path属性を使用するため、返される各WMIオブジェクトには__Pathが含まれている必要があります。
「SELECT \* FROM ...」などのクエリ文字列を使用する場合は__Path属性を使用できますが、「SELECT Name FROM ...」などのより選択的なクエリを使用する場合は、クエリを「」として記述し、__Pathを明示的に含める必要があります。
SELECT __Path,Name FROM ...".
|
onChange
|
対象のファイルをリアルタイムで監視する必要があるかどうかを示します。
|
いいえ
|
false
|
true、false
|
provider
|
オプションで、使用する別のWMI名前空間プロバイダを指定します。
|
いいえ
|
なし
|
RsopLoggingModeProvider 現時点では、これはグループ ポリシー クエリでのみ必須/サポートされており、サポートされる値は「RsopLoggingModeProvider」のみです。グループ
ポリシー クエリは特別です。 RsopLoggingModeProviderコンピュータ上に存在するポリシー データのスナップショットを作成するために使用されます。ポリシー データのスナップショットを作成すると、システムがポリシーの更新中にデータを上書きまたは削除する前に、一貫したデータ
セットに対してクエリを実行できます。スナップショットを作成すると、実際には新しい WMI 名前空間が作成されるため、WQLSet で Provider="RsopLoggingModeProvider"
を使用する場合は、名前空間属性で、作成された名前空間に追加されるサフィックスを指定する必要があります。たとえば、RsopLoggingModeProvider によって作成される一般的な一時名前空間は、「\\.\Root\Rsop\NS71EF4AA3_FB96_465F_AC1C_DFCF9A3E9010」になります。
「\\.\Root\Rsop\NS71EF4AA3_FB96_465F_AC1C_DFCF9A3E9010\Computer」をクエリするには、namespace="Computer"
を指定します。一時的な名前空間は 1 回限りの値であるため、値がエンティティ キーに現れるため、エージェントが変更を検出する機能が妨げられます。これを回避するために、RsopLoggingModeProvider
が使用されている場合、エージェントは返された __Path 値の \Rsop\ 以降から次のバックスラッシュまでの部分を削除します。したがって、エンティティ キーには、「\\.\Root\Rsop\NS71EF4AA3_FB96_465F_AC1C_DFCF9A3E9010\Computer」ではなく、「\\.\Root\Rsop\Computer」のようなプレフィックスが付きます。
|
タイムアウト
|
行ごとのタイムアウトをミリ秒単位で指定します。
|
いいえ
|
5000
|
1~60000 WMIクエリは次の場所で実行されます。準同期このモードでは、結果の行が1つずつフェッチされ、1つの行のフェッチでタイムアウトが発生します。このパラメータを指定しない場合、5000 (5秒) がタイムアウト値として使用されます。
|
エンティティセットの属性
WQLクエリによって返される各「行」は、変更監視の目的で単一のエンティティとして扱われ、返される列はエンティティの属性を表します。 WMI/WQLは制限のない仕様であるため、使用可能な属性またはサポートされている属性のセットリストはありません。監視対象の属性は、クエリとクエリ対象のWMIオブジェクトのスキーマによって決まります。
たとえば、次のWQLSetの場合、
<WQLSet namespace="Computer" wql="select * from RSOP_SecuritySettings where precedence=1" provider="RsopLoggingModeProvider" />
次の属性を返します。
ErrorCode, GPOID, KeyName, SOMID, Setting, Status, id, precedence
一方、次のようなネットワークアダプタにクエリ実行するWQLSetは、
<WQLSet namespace="root\cimv2" wql="select * from Win32_NetworkAdapter where AdapterTypeId = 0" />
次の属性を返します。
AdapterType, AdapterTypeId, Availability, Caption, ConfigManagerErrorCode, ConfigManagerUserConfig,
CreationClassName Description, DeviceID, Index, Installed, MACAddress, Manufacturer,
MaxNumberControlled, Name, PNPDeviceID, PowerManagementSupported, ProductName, ServiceName,
SystemCreationClassName, SystemName, TimeOfLastReset
Agentの負荷を軽減するには、クエリで「select * ...」を使用するのではなく、監視が必要な属性のみを明示的に含めることをお勧めします。これには、属性を追加または削除するためにWMIスキーマを変更しても、その属性が監視対象のセットに含まれていない限り、オブジェクトへの変更としてレポートされないという利点もあります。
「select * from Win32_Foobar」を使用して、Win32_Foobarオブジェクトクラスに新しい属性を追加するパッチをWindowsに適用すると、次回の整合性検索で、新しい属性が出現してからそのクラスのすべてのオブジェクトに対する変更がレポートされます。
次に、必要なWindowsシステムエンティティを返すWMIクエリの例を示します。
Windowsにマウントされたストレージデバイスのクエリ: (*を選択すると、通常、返される属性の80%がnullまたは重複する値になります)
<WQLSet namespace="root\cimv2" wql="SELECT __Path,DeviceID,VolumeName,VolumeSerialNumber,DriveType,FileSystem,Access,MediaType,Size,FreeSpace
FROM Win32_LogicalDisk" />
前述のクエリをさらに進めるために、「リムーバブルディスク」であるタイプ2 (リムーバブルUSBストレージドライブなど) など、特定のタイプのマウントされた論理ストレージデバイスのみを分離するようにDriveTypeを指定できます。
<WQLSet namespace="root\cimv2" wql="SELECT __Path,DeviceID,VolumeName,VolumeSerialNumber,DriveType,FileSystem,Access,MediaType,Size,FreeSpace
FROM Win32_LogicalDisk WHERE DriveType=2" />
(「ここ詳細については、Win32_LogicalDiskクラスを参照してください)。
[USBストレージデバイスの注意事項:] U3 USBデバイスは、タイプ2の「リムーバブルディスク」デバイスとタイプ3の「コンパクトディスク」デバイスの両方をマウントします。また、上記のクエリはストレージデバイスのみを対象としています。
USBストレージ以外のデバイスは含まれません。 USBメモリカードアダプタは、タイプ1の「ルートディレクトリなし」デバイスとして表示されることがあります。互換性のないUSBストレージデバイスまたはWindowsとの互換性がないUSBストレージデバイスは、タイプ1の「不明」なデバイスとして表示されることがあります。
Driveが「F:」である既知のすべてのシステムディレクトリを検索し、関連する属性を検索します。
<WQLSet namespace="root\cimv2" wql="SELECT __Path,CreationDate,LastAccessed,LastModified,Drive,Path,FileName,Caption,FileType,Readable,Writeable
FROM Win32_Directory WHERE Drive='F:'" />
ドライブが「F:」であるすべての既知のシステムファイルを検索し、関連する属性を検索します。
<WQLSet namespace="root\cimv2" wql="SELECT __Path,CreationDate,LastAccessed,LastModified,Drive,Path,FileName,Name,FileType,Readable,Writeable
FROM CIM_DataFile WHERE Drive='F:'" />
「key」の意味
keyは、返されるWMIオブジェクトの「__Path」属性で、通常は次の形式です。
SystemName\Namespace:WmiObjectClass.KeyAttribute=Value[,KeyAttribute=Value...]
例を挙げます。
\TEST-DESK\root\cimv2:Win32_QuickFixEngineering.HotFixID="KB958215-IE7",ServicePackInEffect="SP0" \TEST-DESK\ROOT\Rsop\NSF49B36AD_10A3_4F20_9541_B4C471907CE7\Computer:RSOP_RegistryValue. Path="MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\LegalNoticeText",precedence=1 \TEST-DESK\root\cimv2:BRCM_NetworkAdapter.DeviceID="8"
include/exclude
参照変更監視ルールの言語「include」と「exclude」の使用可能な属性とサブ要素の概要を示します。
WQLSetの場合、通常、「include」および「exclude」サブ要素は必要ありません。 WQLを使用して監視するオブジェクトの正確なセットを指定すると、エージェントとコンピュータのWMI実装の両方で実行される処理量が制限されるため、WQLを使用することをお勧めします。
includeサブ要素またはexcludeサブ要素を使用しても、クエリによって返されるオブジェクトのセットを減らすことしかできません。追加のオブジェクトを返すには、WQLを変更する必要があります。
WQLの結果をさらに制限するためにinclude要素またはexclude要素を使用する必要がある場合は、「*」および「?」文字は、エンティティキーの値と照合するための単純なワイルドカードとして使用できます。