0

メールサーバーの3番目と4番目のバックアップを高速化するためのファイルシステム監視について学習しています。ドライブDで問題なく動作する優れたVBスクリプトがありますが、ドライブCに変更を照会すると、ワイルドカードを使用しても何も返されません。

これが私の質問です:

これはc:\ scで正常に機能しますが、サブフォルダーの変更は返されません。

     Select * From __InstanceOperationEvent Within 10 Where TargetInstance Isa'CIM_DataFile' And((TargetInstance.Drive ='c:' And TargetInstance.Path ='\\ sc \\'))

これはd:\ scで正常に機能し、サブフォルダーの変更を返します。

     Select * From __InstanceOperationEvent Within 10 Where TargetInstance Isa'CIM_DataFile' And((TargetInstance.Drive ='d:' And TargetInstance.Path LIKE'\\ sc \\%'))

これはまったく変更を返しません。エラーメッセージは返されず、スクリプトは引き続き実行されます。

     Select * From __InstanceOperationEvent Within 10 Where TargetInstance Isa'CIM_DataFile' And((TargetInstance.Drive ='c:' And TargetInstance.Path LIKE'\\ sc \\%'))

二重括弧は、「OR」に関連する同様のクエリを追加できるようにするためのものです。

私のシステムドライブはドライブCです。
ドライブDはリムーバブルUSBドライブです。

これが機能しない原因となっているシステムドライブの設定を変更しましたか?
または、クエリが返す結果が多すぎるのではないでしょうか。

私はこれについて数時間探していました。どんな洞察も大歓迎です。

4

1 に答える 1

3

これはLIKE、クラスでWQLセンテンスで演算子を使用するCIM_DataFileと、WMIがドライブ全体をスキャンして一致するものを見つけるためです。これで、USBドライブのツリーフォルダー構造がより小さく(そして単純に)なり、WMIが結果を返すことができるようになります。より迅速に。ただし、Cドライブを使用する場合、すべての一致が見つかるまでWMIはクエリを実行し続けます。したがって、LIKE演算子をと一緒に使用せずCIM_DataFile、代わりに次の=ような演算子を使用することをお勧めします。

Select * From __InstanceOperationEvent Within 1 Where TargetInstance ISA 'CIM_DataFile' And ((TargetInstance.Drive='c:' And TargetInstance.Path = '\\sc\\'))

PD:LIKE複数のフォルダーでモニターの変更が予想されるためにオペレーターを使用している場合、これは不可能です。代わりに、フォルダーごとに1つのWQLとイベントウォッチャーを使用する必要があります。

于 2012-10-24T02:55:29.017 に答える