通过 PowerShell ,可以使用 Get-EventLog、Clear-EventLog、Limit-EventLog、New-EventLog、Remove-EventLog、Show-EventLog 和 Write-EvengLog cmdlet 与这些事件日志进行交互。
第一个:Get - EventLog [ - logName]
第二个:Get - EventLog [ - list] [ - asString] [
第一个用法是查看具体日志用的,第二个用法可以列出系统中所有日志,我们先来看第二个用法的使用:
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'
Source : MSSQL$SQLEXPRESS
Message : 正在启动数据库 'msdb'。
Source : MSSQL$SQLEXPRESS
Message : 正在启动数据库 'model'。
Source : MSSQL$SQLEXPRESS
Message : 正在启动数据库 'mssqlsystemresource'。
Source : MSSQL$SQLEXPRESS
Message : 恢复操作正在数据库 'master' (1)中写入检查点。这只是一条信息性消息,不
需要用户执行任何操作。
如您发现侵权内容,欢迎友好的反馈,站长必在24小时内妥善处理。站长邮箱:postmaster@cloud700.com