查询所有事件日志


最近,一位读者问怎么从本地远程系统上所有的事件中检索全部日志并能方便的保存它们到文件。

这里有一个可用的方案:

# calculate start time (one hour before now)
$Start = (Get-Date) - (New-Timespan -Hours 1)
$Computername = $env:COMPUTERNAME 

# Getting all event logs
Get-EventLog -AsString -ComputerName $Computername |
  ForEach-Object {
    # write status info
    Write-Progress -Activity "Checking Eventlogs on \\$ComputerName" -Status $_

    # get event entries and add the name of the log this came from
    Get-EventLog -LogName $_ -EntryType Error, Warning -After $Start -ComputerName $ComputerName -ErrorAction SilentlyContinue |
      Add-Member NoteProperty EventLog $_ -PassThru 

  } |
  # sort descending
  Sort-Object -Property TimeGenerated -Descending |
  # select the properties for the report
  Select-Object EventLog, TimeGenerated, EntryType, Source, Message | 
  # output into grid view window
  Out-GridView -Title "All Errors & Warnings from \\$Computername"

在上面的脚本,你可以设置你要检索远程电脑和你要返回的时间点。

接下来,脚本在电脑上得到所有有效日志文件且使用一个循环去得到每个日志时间内的错误和警告。我们会知道事件来自哪个日志文件,它使用Add-Member添加了一个标签”EventLog”的属性。

结果报告了上一个过去的时间内所有的错误和警告,用图形窗口展示。使用 “Out-File” or “Export-Csv” 替换”Out-GridView” 将可以使数据输出到硬盘中。

注意远程访问需要管理员权限且可能需要额外安全设置。如果你没有使用管理员权限你可能会收到红色的提醒(因为像这样的“安全日志”访问需特殊权限)

原文地址:Getting Events From All Event Logs

 

本文链接: https://www.pstips.net/getting-events-from-all-event-logs.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注