質問者
Get-wineventで部分文字列でフィルターするには

質問
-
Get-wineventについて質問です。
以下のようなイベントログ(アプリケーションログです)
+ <System>
(略)
</System>
- <EventData>
<Data>JPQA-3256</Data>
</EventData>
</Event>
に対して文字列"JPQA-3256"でフィルターするには
Get-WinEvent -LogName Application -FilterXPath "*[EventData[Data='JPQA-3256']]"
で出来ることは分かりました。が、部分文字列"JPQA-"でフィルターする方法が分かりません。実は、あるツールがXpathだけで条件を設定するようになっているため、別のコマンドに
パイプで渡すというようなことができません。Xpathの指定だけで部分文字列を使って
フィルターすることはできないのでしょうか?
すべての返信
-
XPath 1.0 limitationsによりposition、Band、timediff以外の関数は使用できないそうです。
…となると無理かなぁ?
- 回答としてマーク ucchii2015 2015年10月2日 9:07
- 回答としてマークされていない ucchii2015 2015年10月2日 9:07
-
ご回答、ありがとうございました。でも「クエリは無効です」となってしまいました。
PS C:\Windows\System32\WindowsPowerShell\v1.0> Get-WinEvent -LogName Application -FilterXPath "*[EventData[starts-with(Data/text(), 'JPQA-')]]"
Get-WinEvent : 指定されたクエリは無効です。
発生場所 行:1 文字:1
+ Get-WinEvent -LogName Application -FilterXPath "*[EventData[starts-with(Data/tex ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-WinEvent], EventLogException
+ FullyQualifiedErrorId : System.Diagnostics.Eventing.Reader.EventLogException,Microsoft.PowerShell.Commands.GetWinEventCommandGet-winevent で starts-with とか text と言った関数を使えるのでしょうか?
-
佐祐理さま
ご回答ありがとうございました。
「XPath 1.0 limitations」確認しました。無理っぽいですね。残念ですがあきらめます。ニーズはあると思うのですが…。
アメリカ(?)でも、こんなのがありました。
://stackoverflow.com/questions/10253954/how-can-i-filter-windows-events-retrieve-with-an-xpath-where-a-certain-value-is
(何か「リンクは投稿できない」というエラーになってしまいましたので頭の「http」を削ってみました。)