获得本地系统的eventlog直接用Get-EventLog这个CMDlet就可以了。获取远程事件日志就没有现成的CMDlet了,Powershell 2.0的Remoting可以实现,不过这里要讲在1.0里面的方法,自然是要利用.netFramework那无所不包的类库来实现了。用这个class — System.Diagnostics.EventLog。
命令很简单:
$MyEvtLog = New-Object System.Diagnostics.EventLog(”Logname”, “Servername”)
其中Logname是要取得的日志的名字,类似Application/Security/System这样的名字,而Servername自然就是要连接的远程机器的名字了。
然后就可以通过折腾$MyEvtLog这个变量来取得自己所要的数据了。最简单的用法:
$MyEvtLog.Entries
这个是输出所有Log项。一般来说不会有人想看到这么多的输出,所以用:
$MyEvtLog.Entries| select-object –last 50
这个是输出最后50条,因为默认是按照index排序,所以恰好输出的就是最近的50条。
还可以用where来设置过滤条件:
$event.Entries| where {$_.Source -eq “Perflib”}
这个就是过滤出事件源是Perflib的日志,其它条件也都可以用,比如Time、Type、Source、EventID,甚至是message本身。
最后来个Tip,取System这个log,EventID为6005的日志,能拿到系统Reboot的时间的List。
(New-Object System.Diagnostics.EventLog(”System”, “RemoteServer”)).Entries | where {$_.EventID –eq 6005}
-
文章分类
- Cartoon and Anime (12)
- FreeBSD (12)
- Game (3)
- Hardware (12)
- Hosting (1)
- IT (3)
- Joke (17)
- Life goes on (61)
- Linux (15)
- Music (10)
- Networking (36)
- powershell (1)
- Programming (5)
- Software (20)
- solaris (2)
- tips (1)
- Weblog (43)
- Windows (25)
-
按月归档
- November 2008 (4)
- October 2008 (2)
- September 2008 (4)
- August 2008 (2)
- July 2008 (4)
- June 2008 (2)
- May 2008 (5)
- April 2008 (3)
- March 2008 (3)
- February 2008 (3)
- January 2008 (2)
- December 2007 (3)
- November 2007 (10)
- October 2007 (12)
- September 2007 (8)
- August 2007 (7)
- July 2007 (10)
- June 2007 (12)
- May 2007 (14)
- April 2007 (14)
- March 2007 (18)
- February 2007 (11)
- January 2007 (8)
- December 2006 (12)
- November 2006 (13)
- October 2006 (5)
- September 2006 (9)
- August 2006 (13)
- July 2006 (13)
- June 2006 (16)
- May 2006 (21)
-
Weblog







