• 締切済み

PowerShell と Get-WinEvent

"Get-WinEvent -logname security -FilterXPath"のコマンドを使って、以下の情報を取得しております。 構文(1) "*[System[(EventID=4624 or EventID=4634)] and EventData[Data[@Name='LogonType']='2']]" これは、Windowsイベントログの出力で使っているフィルタの構文になります。 この構文では日時指定が入っていないため、該当するログすべてが出力されます。 そこで、以下のような構文を追加しようとしました。 構文(2) and TimeCreated[@SystemTime>='2014-12-01T00:00:00.000Z' and @SystemTime<='2014-12-31T23:59:59.999Z']]]" ですが、うまくいきません。 連結した個所は、構文1の末尾で言うところの [Data[@Name='LogonType']='2'] (ここに構文(2)を挿入記述) ]" です。 入れ子構造の解釈が間違っているでしょうか?よろしくお願いします。

みんなの回答

  • kteds
  • ベストアンサー率42% (1883/4441)
回答No.2

No.1の補足です。 -FilterXPathを使う場合はパラメータをXMLのアイテム別の順番に指定してみてください。 順番が適切でないと「構文としては正しいが、イベントが見当たらない」というイベント警告メッセージ(フィルタ結果がゼロ件)が表示されます。 したがって、下記のように指定してみてください。 SystemTime および LogonType は適当に適用してみてください。 Get-WinEvent -logname security -FilterXPath "*[System[TimeCreated[@SystemTime>='2015-01-11T00:00:00.000Z' and @SystemTime<='2015-01-23T00:00:00.000Z'] and (EventID=4624 or EventID=4634)] and EventData[Data[@Name='LogonType']='3'] ]" ---以上です。

  • kteds
  • ベストアンサー率42% (1883/4441)
回答No.1

> ですが、うまくいきません。 構文(2)自体は適切ですので、 具体的にどのような結果になっているのでしょうか? 追加前と変わらずに該当するログすべてが出力されるのでしょうか、 対象データが何も無い(ゼロ件)なのでしょうか、 それともエラーが表示されるのでしょうか。 「うまくいかない」だけでは読み手側には解りにくいです。

kenokabe2
質問者

補足

すみません、補足致します。エラー”Get-WinEvent : 指定されたクエリは無効です。”ということで、書式が間違っていたようです。 Get-WinEvent -logname security -FilterXPath "*[System[(EventID=4624 or EventID=4634)] and ` EventData[Data[@Name='LogonType']='2'] and TimeCreated[@SystemTime>='2014/12/01T00:00:00.000Z' and ` @SystemTime<='2014-12-31T23:59:59.999Z']]" 上記コマンドでこのエラーは解消しました。 今度は別のエラーになりまして、”Get-WinEvent : 指定した選択条件に一致するイベントが見つかりませんでした。”に変わったので、記述している式そのものが意図するものとは違うようです。 TimeCreatedの左辺にある and を or に変更すると、時間指定以外の条件に沿ったデータが出力されました。 ただ、意図は 2014年12月分のデータだけに絞り込むことなので、andで良いはずなのですが。

関連するQ&A