Powershell:筛选出用于获取WinEvent的.tmp文件

Powershell:筛选出用于获取WinEvent的.tmp文件,powershell,Powershell,我有一个PowerShell脚本,可以在事件查看器中过滤掉某些安全事件。具体地说,事件ID 4663用于审核谁删除了服务器共享上的文件。不幸的是,这也会显示被删除的.tmp文件,我对此并不关心 该脚本可以很好地过滤这些事件,但我不知道如何过滤掉.tmp事件。我试过像-ne,-match,-notlike,-notcontains和这样的方法运算符,但仍会显示.tmp事件 这是我的密码: $path= "C:\Path\To\Folder\Security.evtx" $filter= "*[Sy

我有一个PowerShell脚本,可以在事件查看器中过滤掉某些安全事件。具体地说,事件ID 4663用于审核谁删除了服务器共享上的文件。不幸的是,这也会显示被删除的.tmp文件,我对此并不关心

该脚本可以很好地过滤这些事件,但我不知道如何过滤掉.tmp事件。我试过像
-ne
-match
-notlike
-notcontains
这样的方法运算符,但仍会显示.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删除事件,我们将不胜感激


***更新的解决方案

原来我在“*.tmp”的末尾缺少了一个
*
,需要包含.message属性。解决方案:

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

一个问题是,您正在将结果传送到此行中的
格式列表

$main= Get-WinEvent -path $path -FilterXPath $filter -MaxEvents 10 | Format-List
通过执行此操作,对象类型将发生更改,并且无法再对其属性进行筛选。删除
|格式列表
和/或在
Where对象
之后使用此cmdlet

关于筛选,我认为您可能需要在
消息
属性的输出中查找*.tmp,如下所示:

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

我尝试了你的解决方案,但是.tmp文件仍然显示出来。我猜扩展属性不存在?我怎样才能通过某种文件名属性来精确定位.tmp扩展名呢?它可能就在
.Message
属性中。很抱歉,我没有打开对象访问的地方可以用来复制。尝试了这两种方法,问题相同。这是一个顽固的问题哈哈,我会继续玩的属性,我感谢你的帮助!请尝试
| Where对象{$\u0.message-notlike“*.tmp*”}
。可能需要一个*双方,因为它将出现在文本块的中间。哇,谁知道缺一个
*
会是一个主要原因。非常感谢你的帮助!