Get-EventLog
取得本機電腦或遠端電腦上事件記錄檔中的事件或事件記錄檔清單。
Syntax
Get-EventLog
[-LogName] <String>
[-ComputerName <String[]>]
[-Newest <Int32>]
[-After <DateTime>]
[-Before <DateTime>]
[-UserName <String[]>]
[[-InstanceId] <Int64[]>]
[-Index <Int32[]>]
[-EntryType <String[]>]
[-Source <String[]>]
[-Message <String>]
[-AsBaseObject]
[<CommonParameters>]
Get-EventLog
[-ComputerName <String[]>]
[-List]
[-AsString]
[<CommonParameters>]
Description
Cmdlet Get-EventLog
會從本機和遠端電腦取得事件和事件記錄檔。 根據預設, Get-EventLog
會從本機電腦取得記錄。 若要從遠端電腦取得記錄,請使用 ComputerName 參數。
您可以使用 Get-EventLog
參數和屬性值來搜尋事件。 Cmdlet 會取得符合指定屬性值的事件。
包含名詞的 EventLog
PowerShell Cmdlet 僅適用于 Windows 傳統事件記錄檔,例如應用程式、系統或安全性。 若要取得在 Windows Vista 和更新版本中使用 Windows 事件記錄檔技術的記錄,請使用 Get-WinEvent
。
注意
Get-EventLog
使用已被取代的 WIN32 API。 結果可能不正確。 Get-WinEvent
請改用 Cmdlet。
範例
範例 1:取得本機電腦上的事件記錄檔
此範例會顯示本機電腦上可用的事件記錄檔清單。 Log 資料行中的名稱會與 LogName 參數搭配使用,以指定搜尋事件的記錄檔。
Get-EventLog -List
Max(K) Retain OverflowAction Entries Log
------ ------ -------------- ------- ---
15,168 0 OverwriteAsNeeded 20,792 Application
15,168 0 OverwriteAsNeeded 12,559 System
15,360 0 OverwriteAsNeeded 11,173 Windows PowerShell
Cmdlet Get-EventLog
會使用 List 參數來顯示可用的記錄。
範例 2:從本機電腦上的事件記錄檔取得最近的專案
此範例會從系統事件記錄檔取得最近的專案。
Get-EventLog -LogName System -Newest 5
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13820 Jan 17 19:16 Error DCOM 10016 The description for Event...
13819 Jan 17 19:08 Error DCOM 10016 The description for Event...
13818 Jan 17 19:06 Information Service Control... 1073748864 The start type of the Back...
13817 Jan 17 19:05 Error DCOM 10016 The description for Event...
13815 Jan 17 19:03 Information Microsoft-Windows... 35 The time service is now sync...
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統事件記錄檔。 最新參數會傳回五個最新的事件。
範例 3:尋找事件記錄檔中特定專案數目的所有來源
此範例示範如何尋找系統事件記錄檔中 1000 個最近專案中包含的所有來源。
$Events = Get-EventLog -LogName System -Newest 1000
$Events | Group-Object -Property Source -NoElement | Sort-Object -Property Count -Descending
Count Name
----- ----
110 DCOM
65 Service Control Manager
51 Microsoft-Windows-Kern...
14 EventLog
14 BTHUSB
13 Win32k
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統記錄檔。 最新參數會選取 1000 個最新的事件。 事件物件會儲存在 變數中 $Events
。 物件 $Events
會從管線向下傳送至 Group-Object
Cmdlet。
Group-Object
會使用 Property 參數依來源分組物件,並計算每個來源的物件數目。 NoElement參數會從輸出中移除群組成員。
Cmdlet Sort-Object
會使用 Property 參數,依每個來源名稱的計數排序。
遞減參數會依從最高到最低計數依順序排序清單。
範例 4:從特定事件記錄檔取得錯誤事件
此範例會從系統事件記錄檔取得錯誤事件。
Get-EventLog -LogName System -EntryType Error
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13296 Jan 16 13:53 Error DCOM 10016 The description for Event ID '10016' in Source...
13291 Jan 16 13:51 Error DCOM 10016 The description for Event ID '10016' in Source...
13245 Jan 16 11:45 Error DCOM 10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07 Error DCOM 10016 The description for Event ID '10016' in Source...
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統記錄檔。 EntryType參數會篩選事件,只顯示 Error 事件。
範例 5:使用 InstanceId 和 Source 值從事件記錄檔取得事件
本範例會從特定 InstanceId 和 Source 的系統記錄檔中取得事件。
Get-EventLog -LogName System -InstanceId 10016 -Source DCOM
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13245 Jan 16 11:45 Error DCOM 10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07 Error DCOM 10016 The description for Event ID '10016' in Source...
13219 Jan 16 10:00 Error DCOM 10016 The description for Event ID '10016' in Source...
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統記錄檔。 InstanceID參數會選取具有指定實例識別碼的事件。 Source參數會指定事件屬性。
範例 6:從多部電腦取得事件
此命令會從三部電腦上的 System 事件記錄檔取得事件:Server01、Server02 和 Server03。
Get-EventLog -LogName System -ComputerName Server01, Server02, Server03
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統記錄檔。 ComputerName參數會使用逗號分隔字串來列出您要從中取得事件記錄檔的電腦。
範例 7:取得訊息中包含特定單字的所有事件
此命令會取得系統事件記錄檔中包含事件訊息中特定單字的所有事件。 您指定的 Message 參數值可能包含在訊息的內容中,但不會顯示在 PowerShell 主控台上。
Get-EventLog -LogName System -Message *description*
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13821 Jan 17 19:17 Error DCOM 10016 The description for Event ID '10016'...
13820 Jan 17 19:16 Error DCOM 10016 The description for Event ID '10016'...
13819 Jan 17 19:08 Error DCOM 10016 The description for Event ID '10016'...
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統事件記錄檔。 Message參數會指定要在每個事件的訊息欄位中搜尋的字組。
範例 8:顯示事件的屬性值
此範例示範如何顯示事件的所有屬性和值。
$A = Get-EventLog -LogName System -Newest 1
$A | Select-Object -Property *
EventID : 10016
MachineName : localhost
Data : {}
Index : 13821
Category : (0)
CategoryNumber : 0
EntryType : Error
Message : The description for Event ID '10016' in Source 'DCOM'...
Source : DCOM
ReplacementStrings : {Local,...}
InstanceId : 10016
TimeGenerated : 1/17/2019 19:17:23
TimeWritten : 1/17/2019 19:17:23
UserName : username
Site :
Container :
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統事件記錄檔。 最新參數會選取最新的事件物件。 物件會儲存在 變數中 $A
。 變數中的 $A
物件會從管線向下傳送至 Select-Object
Cmdlet。
Select-Object
會使用 Property 參數搭配星號 (*
) 來選取所有物件的屬性。
範例 9:使用來源和事件識別碼從事件記錄檔取得事件
本範例會取得指定之來源和事件識別碼的事件。
Get-EventLog -LogName Application -Source Outlook | Where-Object {$_.EventID -eq 63} |
Select-Object -Property Source, EventID, InstanceId, Message
Source EventID InstanceId Message
------ ------- ---------- -------
Outlook 63 1073741887 The Exchange web service request succeeded.
Outlook 63 1073741887 Outlook detected a change notification.
Outlook 63 1073741887 The Exchange web service request succeeded.
Cmdlet Get-EventLog
會使用 LogName 參數來指定 Application 事件記錄檔。 Source參數會指定應用程式名稱 Outlook。 物件會從管線向下傳送至 Where-Object
Cmdlet。 針對管線中的每個物件, Where-Object
Cmdlet 會使用 變數 $_.EventID
來比較事件識別碼屬性與指定的值。 物件會從管線向下傳送至 Select-Object
Cmdlet。 Select-Object
會使用 Property 參數來選取要顯示在 PowerShell 主控台中的屬性。
範例 10:依屬性取得事件和群組
Get-EventLog -LogName System -UserName NT* | Group-Object -Property UserName -NoElement |
Select-Object -Property Count, Name
Count Name
----- ----
6031 NT AUTHORITY\SYSTEM
42 NT AUTHORITY\LOCAL SERVICE
4 NT AUTHORITY\NETWORK SERVICE
Cmdlet Get-EventLog
會使用 LogName 參數來指定系統記錄檔。 UserName參數包含星號 () *
萬用字元來指定使用者名稱的一部分。 事件物件會從管線向下傳送至 Group-Object
Cmdlet。 Group-Object
會使用 Property 參數來指定 UserName 屬性是用來群組物件,並計算每個使用者名稱的物件數目。 NoElement參數會從輸出中移除群組成員。 物件會從管線向下傳送至 Select-Object
Cmdlet。
Select-Object
會使用 Property 參數來選取要顯示在 PowerShell 主控台中的屬性。
範例 11:取得在特定日期和時間範圍內發生的事件
本範例會從系統事件記錄檔中取得指定日期和時間範圍的 Error 事件。 Before和After參數會設定日期和時間範圍,但會從輸出中排除。
$Begin = Get-Date -Date '1/17/2019 08:00:00'
$End = Get-Date -Date '1/17/2019 17:00:00'
Get-EventLog -LogName System -EntryType Error -After $Begin -Before $End
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13821 Jan 17 13:40 Error DCOM 10016 The description for Event ID...
13820 Jan 17 13:11 Error DCOM 10016 The description for Event ID...
...
12372 Jan 17 10:08 Error DCOM 10016 The description for Event ID...
12371 Jan 17 09:04 Error DCOM 10016 The description for Event ID...
Cmdlet Get-Date
會使用 Date 參數來指定日期和時間。 DateTime物件會儲存在 和 $End
變數中 $Begin
。 Cmdlet Get-EventLog
會使用 LogName 參數來指定系統記錄檔。 EntryType參數會指定 Error 事件種類。 日期和時間範圍是由 After 參數和 $Begin
變數以及 Before 參數和 $End
變數所設定。
參數
-After
取得在指定日期和時間之後發生的事件。 After參數日期和時間會從輸出中排除。 輸入 DateTime 物件,例如 Cmdlet 所 Get-Date
傳回的值。
Type: | DateTime |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsBaseObject
指出這個 Cmdlet 會針對每個事件傳回標準的 System.Diagnostics.EventLogEntry 物件。 如果沒有此參數, Get-EventLog
則會傳回具有其他EventLogName、Source和InstanceId屬性的擴充PSObject物件。
若要查看此參數的效果,請將事件管線傳送至 Get-Member
Cmdlet,並檢查結果中的 TypeName 值。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsString
表示這個 Cmdlet 會將輸出傳回為字串,而不是 物件。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Before
取得在指定日期和時間之前發生的事件。 Before參數日期和時間會從輸出中排除。 輸入 DateTime 物件,例如 Cmdlet 所 Get-Date
傳回的值。
Type: | DateTime |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
此參數會指定遠端電腦的 NetBIOS 名稱、網際網路通訊協定 (IP) 位址,或 FQDN) 的完整 (功能變數名稱。
如果未指定 ComputerName 參數, Get-EventLog
預設為本機電腦。 參數也接受點 (.
) 來指定本機電腦。
ComputerName參數不依賴遠端Windows PowerShell。 即使您的電腦未設定為執行遠端命令,您也可以 Get-EventLog
搭配 ComputerName 參數使用。
Type: | String[] |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EntryType
指定這個 Cmdlet 取得的事件專案類型,做為字串陣列。
此參數可接受的值為:
- 錯誤
- 資訊
- FailureAudit
- SuccessAudit
- 警告
Type: | String[] |
Aliases: | ET |
Accepted values: | Error, Information, FailureAudit, SuccessAudit, Warning |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Index
指定要從事件記錄檔取得的索引值。 參數接受以逗號分隔的值字串。
Type: | Int32[] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InstanceId
指定要從事件記錄檔取得的實例識別碼。 參數接受以逗號分隔的值字串。
Type: | Int64[] |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-List
顯示電腦上的事件記錄檔清單。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LogName
指定一個事件記錄檔的名稱。 若要尋找記錄名稱,請使用 Get-EventLog -List
。 允許使用萬用字元。 此為必要參數。
Type: | String |
Aliases: | LN |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Message
指定事件訊息中的字串。 您可以使用此參數來搜尋包含特定單字或片語的訊息。 允許使用萬用字元。
Type: | String |
Aliases: | MSG |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Newest
從最新的事件開始,並取得指定的事件數目。 需要事件數目,例如 -Newest 100
。 指定傳回的事件數目上限。
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Source
指定寫入此 Cmdlet 取得之記錄檔的來源字串陣列。 允許使用萬用字元。
Type: | String[] |
Aliases: | ABO |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-UserName
以字串陣列的形式指定與事件相關聯的使用者名稱。 輸入名稱或名稱模式,例如 User01
、 User*
或 Domain01\User*
。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | True |
輸入
None
您無法使用管線將輸入傳送至 Get-EventLog
。
輸出
System.Diagnostics.EventLogEntry. System.Diagnostics.EventLog. System.String
如果指定 LogName 參數,輸出就是 System.Diagnostics.EventLogEntry 物件的集合。
如果只指定 List 參數,輸出就是 System.Diagnostics.EventLog 物件的集合。
如果同時指定 List 和 AsString 參數,輸出就是 System.String 物件的集合。
備註
Windows 預先安裝環境不支援 Cmdlet Get-EventLog
和 Get-WinEvent
(Windows PE) 。
相關連結
意見反應
提交並檢視相關的意見反應