Windows事件日志快速分析

前言

我每月都要给各种不同的客户做系统巡检,其中Windows事件日志检查是比较耗时的事情。它会记录许多的信息,特别是针对系统安全方面、系统故障排除方面有重要线索。我们可以通过一些事件关键字与信息,制作各种不同的脚本以便快速筛选过滤日志。

一般来说,我们可以通过如下两种方法实现日志过滤:

  • Powershell => Win自带的命令行工具
  • Log Parser 2.2 => 功能非常强大的第三方工具

PowerShell命令方法

Windows PowerShell提供两种不同的命令方式:

  • Get-WinEvent => 功能强大,但运用复杂;

  • Get-EventLog => 简单易用,可实时查询;

# 过滤安全日志的登录成功与失败日志
Get-EventLog Security  -InstanceId  4624,4625

在这里插入图片描述

PowerShell常用命令

1. 检查服务器最近开关机时间

Function Get-ComputerUptimeHistory {
 $q='
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[(EventID=6005 or EventID=6006)]]</Select>
  </Query>
</QueryList>'
$events = Get-WinEvent -FilterXml $q
$i=-1
while ( $i+1 -lt $events.length ) {
 if($i -eq -1)
 {
  [PSCustomObject]@{
  StartTime = $events[0].TimeCreated;
  StopTime = $null ;
  UpTime = [datetime]::Now - $events[0].TimeCreated
  }
 }
 else{
 [PSCustomObject]@{
  StartTime = $events[$i+1].TimeCreated;
  StopTime = $events[$i].TimeCreated ;
  UpTime = $events[$i].TimeCreated - $events[$i+1].TimeCreated
  }
 }
 $i += 2
}
}

Get-ComputerUptimeHistory | ft -AutoSize

在这里插入图片描述

2. 最近登录失败的详细信息

$xml='<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">*[System[(EventID=4625)]]</Select>
  </Query>
</QueryList>'
$events = Get-WinEvent -FilterXml $xml
$i=0
Write-Host '登录时间','登录账号','登录类型','登录IP地址'
while ($i -lt $events.length) {
    $time=$events[$i].TimeCreated
    $type=[regex]::matches($events[$i].Message, '登录类型:(.+)') | %{$_.Groups[1].Value.Trim()}
    $user=([regex]::matches($events[$i].Message, '帐户名:(.+)') | %{$_.Groups[1].Value.Trim()})[1]
    $IP=[regex]::matches($events[$i].Message, '源网络地址:(.+)') | %{$_.Groups[1].Value.Trim()}
    Write-Host $time,$user,$type,$IP
    $i++
}

登录类型参考如下:
在这里插入图片描述

3. 统计指定时间至今的事件数量

# 汇总显示
Get-EventLog security -InstanceId 4624,4625  -After '2020/06/01 00:00' | Group-Object InstanceId | Sort-Object Count -Descending

在这里插入图片描述

# 明细显示
Get-EventLog security -InstanceId 4625  -After '2020/06/01 00:00' | Format-List 

在这里插入图片描述

4. 只关注指定时间某一类型日志

Get-EventLog application -After '2020/06/01 00:00' | Where-Object { $_.EntryType -eq "Error" }

在这里插入图片描述

常见EventID解释

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值