2017-09-21 8 views
1

イベントビューアで特定のセキュリティイベントをフィルタリングするPowerShellスクリプトがあります。特に、イベントID 4663は、サーバー共有上のファイルを誰が削除するかを監査するために使用されます。残念ながら、これは削除された.tmpファイルも表示しますが、私はそれに関係しません。(解決済み)Powershell:Get-WinEventの.tmpファイルをフィルタリングします。

スクリプトはこれらのイベントをフィルタリングするのに問題ありませんが、.tmpイベントをフィルタリングする方法を理解できません。 -ne-match-notlike-notcontains!のような演算子を試しましたが、.tmpイベントが表示されます。これらの.tmp削除イベントをフィルタリングして任意の助けをいただければ幸いです

$path= "C:\Path\To\Folder\Security.evtx" 
$filter= "*[System[(EventID=4663)]]" 
$main= Get-WinEvent -path $path -FilterXPath $filter -MaxEvents 10 | Format-List 
$main | Where-Object {$_.extension -notlike "*.tmp"} 

は、ここに私のコードです!

***更新ソリューション

は、私が「*のの.tmp」の末尾に*を逃すと.messageプロパティを含めるために必要だったが判明しました。ソリューション:

$main= Get-WinEvent -path $path -FilterXPath $filter -MaxEvents 10 
$main | Where-Object {$_.Message -notlike "*.tmp*"} | Format-List 

答えて

1

1つの問題は、あなたがこの行のFormat-Listに結果をパイプしていることである。

$main= Get-WinEvent -path $path -FilterXPath $filter -MaxEvents 10 | Format-List 

オブジェクト型が変更されていないと、もはやそれの性質にフィルタリングすることができます。これにより。 | Format-Listを削除し、Where-Objectの後にこのコマンドレットを使用します。

フィルタリングに関しては、私は次のようにあなたがMessage財産の出力に* .tmpファイルを探すために必要かもしれないと思う:

$main | Where-Object {$_.message -notlike "*.tmp*"} 
+0

私はあなたのソリューションを試みたが、.tmpファイルがまだ現れ。私は拡張プロパティが存在しないと思いますか?おそらく、ファイル名のプロパティを使って.tmp拡張子を特定できますか? – PatrykChristopher

+0

'.Message'プロパティの中にあるかもしれません。申し訳ありませんが、私が再現するために使用できるオブジェクトアクセスがある場所はありません。 –

+0

両方とも同じ問題を試してみました。これは1つの頑固な問題ですLOL私はプロパティで遊ぶつもりです、私はあなたの助けに感謝! – PatrykChristopher