通过 PowerShell ,可以使用 Get-EventLog、Clear-EventLog、Limit-EventLog、New-EventLog、Remove-EventLog、Show-EventLog 和 Write-EvengLog cmdlet 与这些事件日志进行交互。
第一个:Get - EventLog [ - logName] <string > [ - newest <int > ] [<CommonParameters > ]
第二个:Get - EventLog [ - list] [ - asString] [<CommonParameters > ]
第一个用法是查看具体日志用的,第二个用法可以列出系统中所有日志,我们先来看第二个用法的使用:
PS C:\ > Get-EventLog -list
Max(K) Retain OverflowAction Entries Name
------ ------ -------------- ------- ----
512 7 OverwriteOlder 2 , 167 应用程序
512 7 OverwriteOlder 0 安全性
512 7 OverwriteOlder 2 , 629 系统
15 , 360 0 OverwriteAsNeeded 829 Windows PowerShell
上面的列表和我们在事件查看器中看到的应该是一样的。
我们再来看第一个用法的使用:
PS C:\ > Get-EventLog -LogName application -Newest 5
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
14429 四月 04 10 : 42 Info MsiInstaller 11707 Product: Quest PowerG
14428 四月 04 09 : 57 Info MSSQL $SQLEXPRESS 17403 服务器在空闲 1793 秒
14427 四月 04 09 : 43 Info MSSQL $SQLEXPRESS 17896 对于 id 为 1 的计划程
14426 四月 04 09 : 28 Info VMware Server 1103 Virtual machine was a
14425 四月 04 09 : 27 Info MSSQL $SQLEXPRESS 9688 已启动 Service Broker
-LogName后面跟上日志名称,-Newest指列出最近的几条。日志的名称应该就是我们在第二个用法演示中看到的Name列,不过在使用中文时它不能识别,只能使用英文系统下列出的名称:application、security、system。(日志的名称应该是用Get-EventLog -AsString命令查看到的内容)
下面我们来看一下如果进行查询和过滤,这里使用的管道操作(提一下,PowerShell管道传递的是对象,不是字符):
PS C:\> Get-EventLog application | Where-Object {$_.message -match "正在"} | Format-List source,message | more
Source : MSSQL$SQLEXPRESS
Message : 正在启动数据库 'tempdb'。
Source : MSSQL$SQLEXPRESS
Message : 正在清除 tempdb 数据库。
Source : MSSQL$SQLEXPRESS
Message : 服务器正在侦听 ['any' <ipv4> 57964]。
Source : MSSQL$SQLEXPRESS
Message : 正在启动数据库 'msdb'。
Source : MSSQL$SQLEXPRESS
Message : 正在启动数据库 'model'。
Source : MSSQL$SQLEXPRESS
Message : 正在启动数据库 'mssqlsystemresource'。
Source : MSSQL$SQLEXPRESS
Message : 恢复操作正在数据库 'master' (1)中写入检查点。这只是一条信息性消息,不
需要用户执行任何操作。
<SPACE> next page; <CR> next line; Q quit
Where-Object后面的就是查询的表达式,你可以跟据你的需要来构造,Format-List后面跟上列表项,可列出你想列的信息,信息也会全部给列出来,最后的more是用来分屏显示的。如果你愿意,可以将输出信息重定向到一个文件里,方便你来查看。
要提取具有特定类型的事件日志条目,请使用 InstanceID 参数。例如,要在安全事件日志 (ID 4624) 中查看最近 10 个成功登录事件,请运行以下命令:
Get-EventLog -LogName Security -InstanceID 4624 -Newest 10
Get-EventLog 是一个非常有用的 cmdlet,在使用 Server Core 机器时,或者如果您只是想检查您管理的计算机上是否发生了特定事件,您肯定会使用它。
以下相关命令,在查询需求上并不特别友好:
powershell管理员执行
列出安全日志 Get-WinEvent -FilterHashtable @{logname="Security";}
列出系统日志 Get-WinEvent -FilterHashtable @{logname="System";}
列出应用程序日志 Get-WinEvent -FilterHashtable @{logname="Application";}
导出 安全 日志的命令为:
wevtutil epl security d:\security.evtx
该命令将安全日志信息导出到d盘下的security.evtx文件
wevtutil命令的其他参数:
wevtutil el 列出系统中所有日志名称
wevtutil cl system 清理系统日志
wevtutil cl application 清理应用程序日志
wevtutil cl security 清理安全日志
其中,poweshell可以使用以下命令清理日志:
Clear-Eventlog -Log Application, System,Security
如果喜欢这篇文章,欢迎订阅超专业的IT基础架构经验分享以获得最新内容。
已经有 0 条群众意见