![]() |
注意 |
WQLSet要素は、Windows Management Instrumentation WQLクエリステートメントからの結果セットを説明します。WQLは、SQLのようなクエリを多くの異なるオブジェクトクラスに対して行うことを可能にし、結果は各行がオブジェクトを表し、各列がオブジェクトの特定の属性の値を表す行のテーブルを形成します。
![]() |
注意多くのWMIクエリは大量の時間とコンピュータリソースを消費します。誤って完了に数分かかり、数千行を返すクエリを発行するのは簡単です。すべてのクエリは、PowershellやWMI Explorerのようなプログラムを使用してWQLSetで使用する前にテストすることを強くお勧めします。
|
属性
|
説明
|
必須
|
初期設定値
|
設定できる値
|
namespace
|
WMIクエリの名前空間を設定します。
|
オプション
|
なし
|
有効なWMI名前空間を表す文字列値。「root\cimv2」名前空間はWindows OSオブジェクトをクエリする際に最も一般的に使用されますが、「root\directory\LDAP」や「root\Microsoft\SqlServer\ComputerManagement」など他の名前空間も使用できます。指定されたコンピュータ上で利用可能なWMI名前空間を列挙するGetNamespaces.vbsという小さなスクリプトについては、こちらをご覧ください。
|
wql
|
WQLクエリ文字列。
|
オプション
|
なし
|
有効なWQL文字列。クエリには、返されるオブジェクトごとに__Path属性を含める必要があります。エージェントは結果を保存および報告する際に__Path属性をエンティティキーとして使用するため、返される各WMIオブジェクトには__Pathを含める必要があります。「SELECT
* FROM ...」のようなクエリ文字列を使用する場合、__Path属性は利用可能ですが、「SELECT Name FROM ...」のようなより選択的なクエリを使用する場合は、クエリを「SELECT
__Path,Name FROM ...」と書くことで__Pathを明示的に含める必要があります。
|
onChange
|
対象のファイルをリアルタイムで監視する必要があるかどうかを示します。
|
いいえ
|
false
|
true、false
|
provider
|
オプションで、使用する別のWMI名前空間プロバイダを指定します。
|
いいえ
|
なし
|
RsopLoggingModeProvider 現在、これはグループポリシークエリにのみ必要/サポートされており、「RsopLoggingModeProvider」が唯一サポートされている値です。グループポリシークエリは特別であり、RsopLoggingModeProviderを使用してコンピュータ上に存在するポリシーデータのスナップショットを作成することが推奨されています。ポリシーデータのスナップショットを作成すると、システムがポリシーのリフレッシュ中にデータを上書きまたは削除する前に、一貫したデータセットに対してクエリを実行できます。スナップショットを作成すると実際に新しいWMIネームスペースが作成されるため、WQLSetでprovider="RsopLoggingModeProvider"を使用する場合、ネームスペース属性には作成されたネームスペースに追加されるサフィックスを指定する必要があります。例えば、RsopLoggingModeProviderによって作成される典型的な一時ネームスペースは「\\.\Root\Rsop\NS71EF4AA3_FB96_465F_AC1C_DFCF9A3E9010」となります。namespace="Computer"を指定して「\\.\Root\Rsop\NS71EF4AA3_FB96_465F_AC1C_DFCF9A3E9010\Computer」をクエリします。一時ネームスペースは一度限りの値であるため、エージェントがエンティティキーに値が表示されると変更を検出する能力が妨げられます。これを避けるために、エージェントはRsopLoggingModeProviderが使用されると、返された__Path値の\Rsop\以降の部分を次のバックスラッシュまで削除します。したがって、エンティティキーには「\\.\Root\Rsop\Computer」のようなプレフィックスが付き、「\\.\Root\Rsop\NS71EF4AA3_FB96_465F_AC1C_DFCF9A3E9010\Computer」ではなくなります
|
timeout
|
行ごとのタイムアウトをミリ秒単位で指定します。
|
いいえ
|
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
エージェントの負荷を軽減するために、クエリで "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" />
前のクエリに追加して、DriveTypeを指定 (「Removable Disk」であるtype2など、リムーバブルUSBストレージドライブのような) することで、特定タイプのマウント済み論理ストレージデバイスを分離できます
<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の「ルートディレクトリなし」デバイスとして表示される場合があります。Windowsと互換性のないUSBストレージデバイスは、タイプ1の「不明」デバイスとして表示される場合があります。
ドライブが「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はAgentおよびコンピュータのWMI実装の両方によって実行される処理の量を制限するため、監視するオブジェクトの正確なセットを指定するためにWQLを使用することが望ましいです。
任意のincludeまたはexcludeサブ要素の使用は、クエリによって返されるオブジェクトのセットを減らすことしかできません。追加のオブジェクトを返すには、WQLを変更する必要があります。WQLの結果をさらに制限するためにincludeまたはexclude要素を使用する必要がある場合、"*"および"?"文字を単純なワイルドカードとして使用してエンティティキーの値に一致させることができます。