Get-EventLog
取得本機電腦或遠端電腦上的事件記錄檔或事件記錄檔清單中的事件。
語法
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
會向下傳送至 Cmdlet 的 Group-Object
管線。
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:從多部計算機取得事件
此命令會從三部計算機上的系統事件記錄檔取得事件: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。 物件會向下傳送至 Cmdlet 的 Where-Object
管線。 對於管線中的每個物件,Cmdlet 會 Where-Object
使用 變數 $_.EventID
來比較事件標識碼屬性與指定的值。 物件會向下傳送至 Cmdlet 的 Select-Object
管線。 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 參數包含星號 (*
) 通配符,以指定部分用戶名稱。 事件物件會向下傳送至 Cmdlet 的 Group-Object
管線。 Group-Object
會使用 Property 參數來指定 UserName 屬性是用來群組物件,並計算每個使用者名稱的物件數目。 NoElement 參數會從輸出中移除群組成員。 物件會向下傳送至 Cmdlet 的 Select-Object
管線。
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
傳回的值。
類型: | DateTime |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-AsBaseObject
指出此 Cmdlet 會針對每個事件傳回標準 System.Diagnostics.EventLogEntry 物件。 如果沒有此參數,Get-EventLog
則會傳回具有其他 EventLogName、Source 和 InstanceId 屬性的擴充 PSObject 物件。
若要查看此參數的效果,請將事件管線傳送至 Get-Member
Cmdlet,並檢查 結果中的 TypeName 值。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-AsString
表示此 Cmdlet 會將輸出當做字串傳回,而不是物件。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Before
取得指定日期和時間之前發生的事件。 Before 參數日期和時間會從輸出中排除。 輸入 DateTime 物件,例如 Cmdlet 所Get-Date
傳回的值。
類型: | DateTime |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ComputerName
此參數會指定遠端計算機的 NetBIOS 名稱、因特網通訊協定 (IP) 位址或完整功能變數名稱 (FQDN)。
如果未指定 ComputerName 參數,Get-EventLog
預設為本機電腦。 參數也會接受點 (.
) 來指定本機計算機。
ComputerName 參數不依賴 Windows PowerShell 遠端功能。 即使您的電腦未設定為執行遠端命令,您也可以搭配 ComputerName 參數使用Get-EventLog
。
類型: | String[] |
別名: | Cn |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EntryType
指定做為字串數位,這個 Cmdlet 取得的事件項目類型。
此參數可接受的值為:
- 錯誤
- 資訊
- FailureAudit
- SuccessAudit
- 警告
類型: | String[] |
別名: | ET |
接受的值: | Error, Information, FailureAudit, SuccessAudit, Warning |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Index
指定要從事件記錄檔取得的索引值。 參數接受以逗號分隔的值字串。
類型: | Int32[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InstanceId
指定要從事件記錄檔取得的實例標識碼。 參數接受以逗號分隔的值字串。
類型: | Int64[] |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-List
顯示電腦上的事件記錄清單。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-LogName
指定一個事件記錄檔的名稱。 若要尋找記錄檔名稱,請使用 Get-EventLog -List
。 允許通配符。 此為必要參數。
類型: | String |
別名: | LN |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | True |
-Message
指定事件訊息中的字串。 您可以使用此參數來搜尋包含特定單字或片語的訊息。 允許通配符。
類型: | String |
別名: | MSG |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-Newest
從最新的事件開始,並取得指定的事件數目。 需要事件數目,例如 -Newest 100
。 指定傳回的事件數目上限。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Source
指定以字串陣列的形式,將寫入此 Cmdlet 取得的記錄檔來源。 允許通配符。
類型: | String[] |
別名: | ABO |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-UserName
指定以字串陣列的形式指定與事件相關聯的用戶名稱。 輸入名稱或名稱模式,例如 User01
、 User*
或 Domain01\User*
。 允許通配符。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | 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 預安裝環境 (Windows PE) 不支援 Cmdlet Get-EventLog
和 Get-WinEvent
。