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 : 指定されたクエリは無効です