変更監視モジュールは、ディレクトリ、レジストリ値、レジストリキー、サービス、プロセス、インストールされたソフトウェア、ポート、グループ、ユーザ、ファイル、およびエージェント上のWQLクエリステートメントに対する予期しない変更をスキャンします。
変更監視を有効にして設定するには、変更監視の設定を参照してください。
WQLSetエレメントは、Windows Management Instrumentation WQLクエリ文の結果セットについて記述します。WQLは、さまざまなオブジェクトクラスに対してSQLに似たクエリを実行し、その結果について、各行にオブジェクト、各列にオブジェクトの特定属性値を格納した表の形式で返します。
多くのWMIクエリは大量の時間とコンピュータリソースを消費します。完了するのに数分かかり、数千行を返すクエリをうっかり発行してしまうことは簡単です。すべてのクエリは、PowershellやWMI Explorerのようなプログラムを使用してWQLSetで使用する前にテストすることを強くお勧めします。
属性
|
説明
|
必須
|
初期設定値
|
設定できる値
|
namespace
|
WMIクエリの名前空間を設定します。
|
はい
|
なし
|
有効なWMI名前空間を表す文字列値。WindowsOSオブジェクトをクエリする際に最も一般的に使用されるのはroot\cimv2名前空間ですが、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」です。「\\.\Root\Rsop\NS71EF4AA3_FB96_465F_AC1C_DFCF9A3E9010\Computer」にクエリを実行するには、namespace="Computer"を使用します。一時名前空間は1回限りの値であるため、この値がエンティティキーに表示されるため、Agentは変更を検出できません。これを回避するために、Agentは、RsopLoggingModeProviderの使用時に、返された__Path値の\Rsop\から次のバックスラッシュまでの部分を削除します。したがって、エンティティキーには「\\.\Root\Rsop\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 * ...
を使用するのではなく、監視が必要な属性のみを明示的に含めることをお勧めします。これにより、監視対象のセットに含まれていない属性の追加や削除がオブジェクトの変更として報告されないという利点もあります。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
を指定 (リムーバブルUSBストレージドライブに似たRemovable Diskであるtype2など) することで、特定タイプのマウント済み論理ストレージデバイスを分離できます<WQLSet namespace="root\cimv2" wql="SELECT __Path,DeviceID,VolumeName,VolumeSerialNumber,DriveType,FileSystem,Access,MediaType,Size,FreeSpace
FROM Win32_LogicalDisk WHERE DriveType=2" />
Microsoftのドキュメント を参照して、
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:'" />
Driveが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は、返される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の概要を確認してください。
WQLSetの場合、通常、includeおよびexcludeサブ要素は必要ありません。 WQLを使用して監視するオブジェクトの正確なセットを指定すると、エージェントとコンピュータのWMI実装の両方で実行される処理量が制限されるため、WQLを使用することをお勧めします。
includeまたはexcludeのサブ要素を使用することで、クエリによって返されるオブジェクトのセットを減らすことしかできません。追加のオブジェクトを返すには、WQLを変更する必要があります。WQLの結果をさらに制限するためにincludeまたはexclude要素を使用する必要がある場合、
*
および?
文字を単純なワイルドカードとして使用してエンティティキーの値に一致させることができます。