很难相信我花了一个小时在网上搜索,却找不到一个似乎是一个简单的请求的答案。
所有我想做的是得到过去7天的Windows系统和应用程序的事件和出口每个到一个特定的文件夹作为evt格式的文件;所以不是CSV或XML。
有没有一种简单的方法可以使用任何版本的powershell只需要几行代码就可以做到这一点?到目前为止,我尝试了Get-WinEvent,Get-EventLog和下面的方法,但它们都没有达到我的要求。
我现在有的是:
$logFileName = "System"
$exportFileName = $logFileName + (get-date -f yyyyMMdd) + ".evt"
$logFile = Get-WmiObject Win32_NTEventlogFile | Where-Object {$_.logfilename -eq $logFileName} | Where-Object {$_.TimeCreated -ge $filterDate}
$logFile.backupeventlog($defaultDest + "\" + "EventLogs\" + $exportFileName) | Out-Null
但由于某种原因,这要么给我一个错误,要么我没有得到任何结果。
现在,这似乎输出了正确的结果:$logFile = Get-WinEvent -LogName System | Where-Object {$_.TimeCreated -ge $filterDate}
...但是我如何以evt格式导出它?我在上面的例子中尝试了一下,但得到了一个错误:
方法调用失败,因为[System.诊断。Eventing.Reader.EventLogRecord]不包含名为“backupeventlog”的方法。
2条答案
按热度按时间nwsw7zdq1#
对不起,我没有滚动到你的代码足够远。问题是返回的WMI对象没有
$_.TimeCreated
属性,所以当您筛选Where-Object {$_.TimeCreated -ge $filterDate}
时,它永远不会返回任何东西。该命令与日志文件本身有关,而与日志中的事件无关,因此无法以这种方式删除事件。您必须备份日志,然后以某种方式从备份中删除事件。rsl1atfo2#
这似乎可以毫无错误地导出到evtx,使用ticks的xpath查询(10,000 ticks = 1毫秒)(/ow表示覆盖):
参考:Exporting Events with Wevtutil Using a Time-Based Query – Cloud Azzurri
事后过滤查询: