利用PowerShell查询系统日志

      本人管理者公司的服务器,有时服务器出了问题,就要上去查看系统日志,一直一来使用的都是系统自带的事件查看器,在使用过程中很是不方便:信息只能一条一条的看,没有相关的查询和过滤功能。一直想找个替代工具,不过一直也没有找到。

      这几天在翻看从网上down的一本关于PowerShell的电子书,无意间看到了PowerShell对于查看系统日志的支持,使用的是Get-EventLog这个命令。我们先来看一下这个命令的用法:

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管道传递的是对象,不是字符):

ContractedBlock.gif ExpandedBlockStart.gif Code
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是用来分屏显示的。如果你愿意,可以将输出信息重定向到一个文件里,方便你来查看。

转载于:https://www.cnblogs.com/kasoo/archive/2009/04/04/powershell-event-viewer.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值