Powershell:筛选出用于获取WinEvent的.tmp文件
我有一个PowerShell脚本,可以在事件查看器中过滤掉某些安全事件。具体地说,事件ID 4663用于审核谁删除了服务器共享上的文件。不幸的是,这也会显示被删除的.tmp文件,我对此并不关心 该脚本可以很好地过滤这些事件,但我不知道如何过滤掉.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
-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*”}
。可能需要一个*双方,因为它将出现在文本块的中间。哇,谁知道缺一个*
会是一个主要原因。非常感谢你的帮助!