0

Windows イベントには、XPATH (高速検索) でフィルター処理する機能があります。以下に示すように、特定の値が特定の値である場合にフィルタリングされた PowerSHell Cmdlet Get-WinEvent を正常に使用しました

$qry = "*[(EventData/Data[@Name='TaskName'] ='\Microsoft\Windows\Diagnosis\Scheduled') ]"                                   
Get-WinEvent -LogName Microsoft-Windows-TaskScheduler/Operational -FilterXPath         $qry -ErrorAction SilentlyContinue  -MaxEvents 3   

ただし、特定のタスク名でフィルタリングするのではなく、その部分文字列、contains の start-with などでフィルタリングしたい..たとえば、上記のシナリオでは、 "startswith" \Microsoft\Windows\Diagnosis を実行したい。ただし、私が試したさまざまな手法はすべて、次のような標準の XPATH 1.0 構文のようです。

$qry = "*[starts-with(EventData/Data[@Name='TaskName'] ,'\Microsoft\Windows\Diagnosis') ]" 

エラーを与える Get-WinEvent : 指定されたクエリは無効です

4

1 に答える 1

2

含む関数を試してください:

$x = [xml] '<root><books><book title="Foo" /></books></root>'
$x.SelectSingleNode('//book[contains(@title, oo)]')

xpath 文字列関数のリファレンス: http://msdn.microsoft.com/en-us/library/ms256180.aspx

あなたのものは次のようになります:

"*[EventData[contains(Data,'\Microsoft\Windows\Diagnosis\Scheduled')]]"  
于 2012-04-20T21:58:06.467 に答える