トップ回答者
get-wineventからMessageフィールド内の任意の項目だけを抜き出すには

質問
-
Get-wineventについて質問です。
PowerShell2.0(Windows7 ProfessionalEdition)以上の環境において、以下のコマンドを実行しました。
<実行コマンド>
Get-WinEvent -logname security -FilterXPath "*[System[(EventID=4624 or EventID=4634)]]" | select-object Timecreated,Id,Message
<質問内容>
イベントログの情報の大部分はこのMessageフィールドに書かれているようで、プロセスIDやログオンID、そしてアカウント名などはMessageの中身を
見なくてはなりません。
・・・ですが、上記のselect-objectを使った手法では、そもそも"TargetUserName"などがオブジェクトとして存在していないように見受けられます。
(get-memberによって確認)
パイプでif文の($_.message -match "MyLogonID")) のように「文字列の一致」を判定する処理に渡す、という方法しかないと考えて良いでしょうか?
- 編集済み Fuzitaman 2015年2月19日 15:33
回答
-
プロセスIDやアカウント名等でフィルタをかけるだけなら、-FilterXPathでできないでしょうか?
理屈的には、XMLに出力される情報ならFilterXPathでフィルタをかけられると思います。
こちらが参考になるのではないでしょうか。
ただ、フィルタではなく値の取得、表示を行いたい場合は、チャブーンさんのご指摘の通りToXml()でXML化するしかないのかな…と思います。
すべての返信
-
プロセスIDやアカウント名等でフィルタをかけるだけなら、-FilterXPathでできないでしょうか?
理屈的には、XMLに出力される情報ならFilterXPathでフィルタをかけられると思います。
こちらが参考になるのではないでしょうか。
ただ、フィルタではなく値の取得、表示を行いたい場合は、チャブーンさんのご指摘の通りToXml()でXML化するしかないのかな…と思います。