[筆記]以程式透過WMI讀取Windows系統事件日誌

大家都知道Windows的事件日誌可由事件檢視器中觀看
但若是要管理大量的伺服器、觀看它們的log時
除了額外安裝第三方syslog的軟體外
其實微軟有內建WMI Service
完全符合 DMTF Common Information Model (CIM) 與 WBEM 規格
可以程式透過WMI讀取Windows系統事件日誌

大家都知道Windows的事件日誌可由事件檢視器中觀看
但若是要管理大量的伺服器、觀看它們的log時
除了額外安裝第三方syslog的軟體外
其實微軟有內建WMI Service
完全符合 DMTF Common Information Model (CIM) 與 WBEM 規格
可以程式透過WMI讀取Windows系統事件日誌
其實網路上盛名的"
聖哥的資訊站"有更詳細和專業的教學
而我因工作需要稍微研究了一下
以下做個筆記,待之後實作後再進行補充
若有任何錯誤之處亦煩請各路朋友賜教 ^^

1.WMI讀取事件日誌需要目標主機的管理員權限,或是網域的Domain Admin權限

2.設定的第一步是要先確認目標主機(被讀取事件的主機)WMI服務有啟動
   可下指令 net start winmgmt 或從服務中啟動(預設是自動啟動的)

WMI Service

3.目標主機開啟防火牆TCP 135139445 port (是否三個都要開尚待確認)
   以及依照
http://support.microsoft.com/kb/875605#4 教學設定
   允許遠端系統管理、授與 DCOM 遠端啟動權限、開啟 DCOM 連接埠、新增用戶 端應用程式至 Windows 防火牆例外清單

4.選擇一種支援WMI的腳本語言(VBScript, Microsoft JScript, Perl, ASP, .Net written in C#, Visual Basic .NET, or J#)

5.程式邏輯大致上分為三個步 驟
        a.連接到WMI服務
        b.檢視WMI管理的資源
        c.顯示WMI管理資源的內容及屬性

6.若以VB為例,將目標電腦的log中大部份欄位資料列印出來 (此範例參考自)

strComputer = "目 標電腦名稱or IP" 

Set wbemServices = Getobject("winmgmts:\\" & strComputer)
Set wbemObjectSet = wbemServices.InstancesOf("
Win32_NTLogEvent") 

For Each wbemObject In wbemObjectSet
    WScript.Echo "Log File:        " & wbemObject.LogFile        & vbCrLf & _
                 "Record Number:   " & wbemObject.RecordNumber   & vbCrLf & _
                 "Type:            " & wbemObject.Type           & vbCrLf & _
                 "Time Generated:  " & wbemObject.TimeGenerated  & vbCrLf & _
                 "Source:          " & wbemObject.SourceName     & vbCrLf & _
                 "Category:        " & wbemObject.Category       & vbCrLf & _
                 "Category String: " & wbemObject.CategoryString & vbCrLf & _
                 "Event:           " & wbemObject.EventCode      & vbCrLf & _
                 "User:            " & wbemObject.User           & vbCrLf & _
                 "Computer:        " & wbemObject.ComputerName   & vbCrLf & _
                 "Message:         " & wbemObject.Message        & vbCrLf
Next

另外Willie說有一套OpenSource的套件可以管理WMI
等到玩過後再上來分享
這裡暫且筆記一下

 

參考網站:
http://www.microsoft.com/taiwan/technet/prodtechnol/windows2000serv/technologies/activedirectory/deploy/wmi.aspx
http://cat14051.mysinablog.com/index.php?op=ViewArticle&articleId=344904
http://hi.baidu.com/netbugs/blog/item/26eed703891f1cec08fa93ab.html
http://support.microsoft.com/kb/875605
http://teacher.syset.com/viewforum.mspx?f=61&topicdays=0&sort=&order=DESC&start=200
http://msdn.microsoft.com/en-us/library/aa826517%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa393964%28v=VS.85%29.aspx#obtaining_data_from_WMI


從諮商輔導人心
到諮商輔導資訊系統及網路世界
雖繞了一大圈 但都是極具意義的事
秉持著過去所學 朝著自己的興趣
體驗著一輩子只有一次的人生~~