このページのトピック
WQLSet
変更監視モジュールは、ディレクトリ、レジストリ値、レジストリ キー、サービス、プロセス、インストールされたソフトウェア、ポート、グループ、ユーザー、ファイル、およびエージェントの WQL クエリ ステートメント。
変更監視を有効にして設定する方法については、変更監視の設定 を参照してください。
WQLSetエレメントは、Windows Management Instrumentation WQLクエリ文の結果セットについて記述します。WQLは、さまざまなオブジェクトクラスに対してSQLに似たクエリを実行し、その結果について、各行にオブジェクト、各列にオブジェクトの特定属性値を格納した表の形式で返します。
WMIクエリの多くは、時間とコンピュータリソースを大量に消費します。完了まで数分かかり何千行もの結果を返すクエリを、不注意で実行してしまうことがあります。WQLSetで使用する前に、すべてのクエリをPowerShellやWMI Explorerなどのプログラムを使用してテストすることを強く推奨します。
属性 | 説明 | 必須 | 初期設定値 | 設定できる値 |
namespace | WMIクエリの名前空間を設定します。 | はい | なし | 有効なWMI名前空間を表す文字列値。 「root \ cimv2」名前空間は、Windows OSオブジェクトのクエリに最もよく使用される名前空間ですが、「root \ directory \ LDAP」や「root \ Microsoft \ SqlServer \ ComputerManagement」などのその他の名前空間も使用できます。指定したコンピュータで使用可能なWMI名前空間を列挙する「GetNamespaces.vbs」という短いスクリプトについては、ここを参照してください。 |
wql | WQLクエリ文字列。 | はい | なし | 有効なWQL文字列。 クエリには、返されるオブジェクトごとに__Path属性を含める必要があります。 Agentは、結果を保存およびレポートするときにエンティティキーとして__Path属性を使用するため、返される各WMIオブジェクトには__Pathが含まれている必要があります。 "SELECT \* FROM ...などのクエリ文字列を使用する場合は__Path属性を使用できますが、SELECT Name FROM ...などのより選択的なクエリを使用する場合は、SELECT __Pathとしてクエリを記述して、__Pathを明示的に含める必要があります。 ,名前FROM ... |
onChange | 返されたファイルをリアルタイムで監視する必要があるかどうか。 | いいえ | false | true、false |
provider | オプションで、使用する別のWMI名前空間プロバイダを指定します。 | いいえ | なし | RsopLoggingModeProvider 現在、これはグループポリシークエリでのみ必須またはサポートされており、サポートされている値はRsopLoggingModeProviderのみです。 RsopLoggingModeProviderを使用してコンピュータに存在するポリシーデータのスナップショットを作成することをお勧めするため、グループポリシークエリは特別です。ポリシーデータのスナップショットを作成すると、 クエリは、ポリシーの更新中にシステムが上書きまたは削除する前に、一貫性のあるデータセットに対して実行できます。スナップショットの作成は、実際には新しいVMI名前空間を作成することです。そのため、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 * ...
を使用するのではなく、監視が必要な属性のみを明示的に含めることをお勧めします。これには、属性を追加または削除するために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
を指定して、マウントされている特定のタイプの論理ストレージデバイスのみを分離することができます。たとえば、タイプ2はリムーバブルディスク (リムーバブル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
クラスの詳細については、Microsoftのドキュメント を参照してください。
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:'" />
キーの意味
キーは、返された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を変更する必要があります。 include要素またはexclude要素を使用してWQLの結果をさらに制限する必要がある場合は、 *
および ?
文字を単純なワイルドカードとして使用して、エンティティキーの値と照合できます。