1. 程式人生 > >PowerShell 2.0管理事件日誌(一)檢視和讀取事件日誌

PowerShell 2.0管理事件日誌(一)檢視和讀取事件日誌

事件日誌是作業系統用來儲存本身及其他程式資訊的工具,本文將會介紹如何通過PowerShell指令碼閱讀事件日誌並建立新的日誌條目。Windows系統中包含多種事件日誌,在Windows XP系統中包括4種主要的事件日誌。即應用程式、系統、安全性及Internet Explorer日誌,如圖1所示。這樣使用者可以方便地從系統中提取和檢視日誌,從而瞭解系統的當前執行情況。本文將會介紹如何通過PowerShell管理Windows事件日誌的方法。

image

圖1 WindowsXP系統的事件日誌

1 檢視事件日誌

在Windows Vista和Windows Server 2008版本中,事件日誌的功能能夠得到了大量改進和增強。通過使用Get-EventLog cmdlet可以檢視事件日誌內容,下面是指令碼GetEventLogs.ps1的程式碼:

Get-EventLog –List

該指令碼可獲取本機中所有事件日誌的清單,其中包括每個事件日誌的大小、記錄數,以及儲存和覆蓋策略等摘要資訊,如圖2所示。

image

圖2 事件日誌清單

2 讀取事件日誌

使用Get-EventLog –list查詢當前計算機的事件日誌後,可以使用Get-EventLog讀取相應的日誌,其基本形式是將事件日誌的名稱提供給Get-EventLog cmdlet。GetApplicationEventLog.ps1指令碼的程式碼如下:

Get-EventLog application

執行該指令碼顯示所選日誌的內容,如圖3所示。

image

圖3 所選日誌的內容

通常作業系統中有大量的系統日誌,會顯示為多屏。為了獲取有用的資訊,需要篩選輸出內容。

(1)輸出到文字檔案

建立名為“WriteAppLogToText.ps1”的指令碼輸出查詢結果到日誌文字檔案中,其程式碼如下:

Get-EventLog application >C:/PowerShell/Applog.txt

生成的文字檔案內容如圖4所示,其中儲存完整的日誌,隨後即可查詢其中關心的內容。

image

圖4 生成文字檔案內容

還可以通過switch語句和正則表示式搜尋和提取所需的內容,指令碼switchAppTextLog.ps1使用這種方法處理日誌,其程式碼如下:

$AppLog = “C:/PowerShell/Applog.txt” $e=$i=$w=0

Switch –wildcard –file $AppLog{

“*error*” {$e++}

“*info*” {$i++}

“*warn*” {$w++}

}

Write-Output “

$AppLog Contain following:

Errors $e

Warning $w

Information $i

執行結果如圖5所示。

image

圖5 執行結果

(2)輸出到XML檔案

將日誌匯出為XML檔案需要使用Export-Clixml,這裡使用Get-EventLog cmdlet指定要獲取的事件日誌的名稱,用管道將日誌結果傳遞給Export-Clixml cmdlet。並使用Export-Clixml cmdlet的引數指定儲存輸出的XML檔案路徑,路徑中包含的資料夾地址必須是現有存在的;否則將會發生錯誤,如圖6所示。

image

圖6 將系統日誌輸出到XML檔案中出錯

需要強調的是在Windows Vista和Windows Server 2008中,沒有提升許可權的使用者無法在系統分割槽根目錄中寫入檔案。在這種情況下,需要具有操作的足夠許可權才能將日誌檔案儲存在其中。如果要檢視程式日誌,則不必提升許可權。在使用事件檢視器(Eventvwr.exe)工具讀取安全日誌時,需要提升使用者賬號許可權(UAC)。訪問安全日誌需要安全令牌中包括seSecurityPrivilege特權,預設情況下,只有管理員組的成員可以獲得此許可權,因此在需要將指令碼提升許可權後執行。最簡單方法是建立一個提升的Windows PowerShell的程序,為此右擊後選擇快捷選單中的“執行方式”選項。在開啟的對話方塊中輸入管理員賬號及密碼,即可以管理員身份運行當前的PowerShell程序。

建立名為“WriteAppLogToXml.ps1”的指令碼,將日誌寫入XML檔案中,程式碼如下:

Get-EventLog application | Export-Clixml –Path C:/PowerShell/applog.xml –Depth 2

寫入後可以使用Excel開啟該檔案。需要通過選單中的“資料”|“XML”|“匯入”選項選中其中要匯入的檔案,從彈出的“匯入資料”對話方塊中選擇“現有工作表中的XML列表”選項。隨後Excel會用一段時間轉換,表格中顯示其中的內容。但是表中的列名稱並不是事件日誌中的欄位名,這裡的顯示名稱會類似“n”或“ns:l”,或其他名稱。如果檢視每一列資料的詳細資訊,則與日誌檔案中的資料相吻合,如圖7所示。

image

圖7 將xml格式的系統日誌匯入Excel中顯示

3 總結

本文介紹了通過PowerShell對Windows Vista和Windows Server 2008的事件日誌進行管理的操作,包括使用Get-EventLog cmdlet生成可用的事件日誌清單、使用同一個cmdlet檢視、讀取不同的事件日誌。

作者: 付海軍
出處:http://blog.csdn.net/fuhj02
版權:本文版權歸作者和csdn共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段宣告;必須在文章中給出原文連線;否則必究法律責任
個人網站: http://txj.shell.tor.hu/