【发布时间】:2015-02-04 18:21:29
【问题描述】:
我需要定期将 Windows 事件日志从我们的生产环境导出到 CSV。
我有一个简单的 XML 配置文件,其中包含我需要从中获取事件的机器列表,以及我需要检索的事件 ID 列表。
从这里我依次遍历每台机器名称,然后是每个事件 ID 以检索日志,然后导出为 CSV。我希望每台机器每次执行一个 CSV。
一旦我计算出所有变量,PS 命令就可以非常简单地检索一个事件 ID 的日志
foreach ($machine in $config.Configuration.Machines.Machine)
{
$csvname=$outputlocation + $machine.Value + "_" + $datestring + ".csv"
foreach ($eventid in $config.Configuration.EventIds.EventId)
{
Get-WinEvent -ComputerName $machine.Value -ErrorAction SilentlyContinue -FilterHashTable @{Logname='Security';ID=$eventid.Value} | where {$_.TimeCreated -gt $lastexecutiondate} | export-csv -NoClobber -append $csvname
}
}
Execpt 我无法每次都附加到 CSV,PS 2.0 显然不支持这一点。我曾尝试一次提取所有事件 ID,但这似乎有点冗长,现在可能允许使用配置文件,但我对 PowerShell 相当陌生,所以我没有太多运气。
我还需要指定多个 LogNames(系统、安全和应用程序),并且希望运行一个语句而不是同一个语句 3 次和应用,但我不确定如何执行此操作。
不幸的是,此时谷歌让我绕着圈子跑。
【问题讨论】: