如何搜尋 Windows PowerShell的事件日誌

 

Windows 將大量信息記錄到事件日誌中,這意味著事件日誌包含大量有用的疑難解答信息。 協助 Windows 用戶和系統管理員都可以使用事件日誌來了解何時出現問題以及原因。 當然,利用所有這些信息,可能很難進行搜索和理解。 對於許多系統管理員而言,通常必須搜索多個系統使問題變得更加複雜,如果通過用戶界面手動進行操作,則可能會花費很長時間。

PowerShell提供了本機cmdlet,使您可以快速搜索要在其中找到的內容。 Windows 事件日誌。 過濾結果並返回所需內容的能力有助於將故障排除工作集中在正確的位置。

使用Get-WinEvent搜索事件日誌

能夠搜索事件日誌的PowerShell cmdlet被恰當地命名 Get-WinEvent。 這將根據您傳遞的參數檢索事件日誌條目。 讓我們演示一下對應用程序事件日誌的基本搜索-默認情況下,Get-WinEvent cmdlet將返回最新的條目,可以通過傳遞-Oldest參數來逆轉最新的條目。 您還可以看到,默認情況下,事件由提供者分組。

Get-WinEvent -LogName'Application'-MaxEvents 10
從應用程序事件日誌中返回分組的結果。

要列出所有可用的日誌供您搜索,可以使用 -ListLog * 參數如下所示。 請記住,會有很多日誌。 您可能還會看到有錯誤的日誌,這通常是因為這些日誌只能由管理員帳戶訪問。 如果運行提升的PowerShell,則不應看到此錯誤。

$ Results = Get-WinEvent -ListLog * $ Results | 選擇對象-前15
顯示來自可用事件日誌的前15個結果。

通過將日誌保存到變量中,可以減少以後搜索正確日誌所需的時間,這也可以清除由於訪問而無法訪問的日誌。

通過哈希表過濾

如果我們只想返回某個日期之間的日誌條目怎麼辦? 不像舊的 Get-EventLog cmdlet(已棄用)沒有特定於日期的參數。 有兩種方法可以使用XPath代碼或哈希表通過cmdlet過濾結果。 最簡單的方法是使用哈希表方法,如下所示。

$ StartDate =(Get-Date).AddDays(-3)$ Logs = Get-WinEvent -FilterHashtable @ {LogName ='Application'; StartTime = $ StartDate; } $ Logs.Count
演示使用Get-WinEvent cmdlet按日期和時間進行篩選的功能。

甚至三天的日誌也可能導致要檢查的日誌很多。 這就是為什麼篩選對於將結果縮小到所需範圍非常重要的原因。 將日期返回到僅一天之前,結果縮短為940。

這是有幫助的,但仍然太多了,因此也可以限制提供者的結果。 也許我們想找到 Windows 錯誤報告條目? 通過使用其他鍵值,我們可以在時間窗口提供者中限制該提供者。

$ StartDate =(獲取日期).AddDays(-3)$ ProviderName ='Windows 錯誤報告'$ Logs = Get-WinEvent -FilterHashtable @ {LogName ='Application'; StartTime = $ StartDate; ProviderName = $ ProviderName; } $ Logs.Count
使用Get-WinEvent cmdlet按提供程序名稱進行的其他篩選。

如您所見,通過使用過濾器縮小我們想要的範圍,我們可以快速發現所需的結果。

通過XPath過濾

到目前為止,過濾事件的更困難方法 Get-WinEvent 正在使用 -FilterXPath 使用XPath語言的參數。 為了演示與上述相同的示例,讓我們展示使用這種XML語言的外觀。

Get-WinEvent -FilterXPath“ * [System [Provider [@ Name ='Windows 錯誤報告']和TimeCreated [timediff(@SystemTime)<= 86400000]]]“ -LogName'Application'
演示使用XPath過濾結果。

要觸摸的另一個參數是 -FilterXML 參數。 從功能上講,這與 -FilterXPath 參數,但有點冗長。 如果您確實需要自定義查詢,則包括事件日誌使用的其他XML結構。 一個例子如下所示。 您可能會注意到XPath部分位於 Select 節點,我們用來傳遞給 -FilterXPath 參數。

* [系統[提供者[@ Name ='Windows 錯誤報告']和TimeCreated [timediff(@SystemTime)<= 86400000]]]

一個非常有用的技巧是輕鬆生成XPath或完整的XML查詢,您可以使用 Windows 事件日誌GUI。 點擊過濾器並設置查詢後,您可以點擊XML標籤,然後將該結果與 Get-WinEvent 小命令。

過濾器的“事件日誌”查看器XML視圖。

結論

運用 Get-WinEvent 是查詢 Windows 事件日誌。 在此使用此內置cmdlet Windows 使用PowerShell和PowerShell 7,您可以僅在事件日誌中找到要查找的條目。 這使得系統管理員的工作變得更加容易,對系統進行故障排除並發現潛在的問題!

該職位 如何搜尋 Windows PowerShell的事件日誌 最早出現 的Petri.