【发布时间】:2021-04-30 01:15:43
【问题描述】:
难以置信,我只花了一个小时在网上搜索,却找不到看似简单的请求的答案。
我要做的就是获取最近 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.Diagnostics.Eventing.Reader.EventLogRecord] 不包含 名为“backupeventlog”的方法。
【问题讨论】:
-
看起来您只是修改了this 站点上的示例,但您从未定义
$logFileName。尝试将其定义为系统日志文件的完整文件路径,看看是否更适合您。 -
我有,但由于某种原因没有在我的示例中包含它。但我不断收到“您不能在空值表达式上调用方法。”
标签: powershell