共用方式為


Get-WinEvent

從本機電腦和遠端電腦上的事件記錄檔和事件追蹤記錄檔取得事件。

Syntax

Get-WinEvent
   [[-LogName] <String[]>]
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-ListLog] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-Force]
   [<CommonParameters>]
Get-WinEvent
   [-ListProvider] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [<CommonParameters>]
Get-WinEvent
   [-ProviderName] <String[]>
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-Path] <String[]>
   [-MaxEvents <Int64>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterHashtable] <Hashtable[]>
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXml] <XmlDocument>
   [-Oldest]
   [<CommonParameters>]

Description

此 Cmdlet 僅適用於 Windows 平臺。

Cmdlet Get-WinEvent 會從事件記錄檔取得事件,包括傳統記錄,例如系統和應用程序記錄。 Cmdlet 會從 Windows Vista 中引進的事件記錄檔技術,以及 Windows (ETW 事件追蹤 所產生的記錄檔事件,取得數據) 。 根據預設, Get-WinEvent 依最新到最舊的順序傳回事件資訊。

Get-WinEvent 列出事件記錄檔和事件記錄提供者。 若要中斷命令,請按 CTRL+C。 您可以從選取的記錄檔或從選取的事件提供者所產生的記錄檔取得事件。 而且您可以在單一命令中結合來自多個來源的事件。 Get-WinEvent 可讓您使用 XPath 查詢、結構化 XML 查詢和哈希表查詢來篩選事件。

如果您不是以系統管理員身分執行 PowerShell,您可能會看到無法擷取記錄相關信息的錯誤訊息。

範例

範例 1:從本機計算機取得所有記錄

此命令會取得本機電腦上的所有事件記錄檔。 記錄會依取得記錄的順序 Get-WinEvent 列出。 系統會先擷取傳統記錄,然後擷取新的 Windows 事件記錄檔。 記錄檔的 RecordCount 可能是 null,其為空白或零。

Get-WinEvent -ListLog *

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14500 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        3015 CxAudioSvcLog
Circular            20971520             ForwardedEvents
Circular            20971520           0 HardwareEvents

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 ListLog 參數會使用星號 () * 通配符來顯示每個記錄檔的相關信息。

範例 2:取得傳統安裝記錄檔

此命令會取得代表傳統安裝程序記錄的 EventLogConfiguration 物件。 物件包含記錄的相關信息,例如檔案大小、提供者、檔案路徑,以及是否啟用記錄檔。

Get-WinEvent -ListLog Setup | Format-List -Property *

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Setup
LogType                        : Operational
LogIsolation                   : Application
IsEnabled                      : True
IsClassicLog                   : False
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Setup.evtx
MaximumSizeInBytes             : 1052672
LogMode                        : Circular
OwningProviderName             : Microsoft-Windows-Eventlog
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

Cmdlet Get-WinEvent 會使用 ListLog 參數來指定 安裝程式 記錄檔。 物件會向下傳送至 Cmdlet 的 Format-List 管線。 Format-List 使用 Property 參數搭配星號 (*) 通配符來顯示每個屬性。

範例 3:設定傳統安全性記錄

此命令會取得代表傳統安全性記錄的 EventLogConfiguration 物件。 然後,物件會用來設定記錄檔的設定,例如檔案大小上限、檔案路徑,以及是否啟用記錄檔。

$log = Get-WinEvent -ListLog Security
$log.MaximumSizeInBytes = 1gb
try{
   $log.SaveChanges()
   Get-WinEvent -ListLog Security | Format-List -Property *
}catch [System.UnauthorizedAccessException]{
   $ErrMsg  = 'You do not have permission to configure this log!'
   $ErrMsg += ' Try running this script with administrator privileges. '
   $ErrMsg += $_.Exception.Message
   Write-Error $ErrMsg
}

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Security
LogType                        : Administrative
LogIsolation                   : Custom
IsEnabled                      : True
IsClassicLog                   : True
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Security.evtx
MaximumSizeInBytes             : 1073741824
LogMode                        : Circular
OwningProviderName             :
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

Cmdlet Get-WinEvent 會使用 ListLog 參數來指定 安全性 記錄檔。 物件會儲存至變數。 MaximumSizeInBytes 屬性在 對象上設定為 1 GB。 呼叫 SaveChanges 方法,將變更推送至 try 區塊內的系統,以處理存取違規。 Cmdlet Get-WinEvent 會在 安全性 記錄檔上再次呼叫,並透過管道傳送至 Format-List Cmdlet,以確認 MaximumSizeInBytes 屬性已儲存在計算機上。

範例 4:從伺服器取得事件記錄檔

此命令只會在包含事件的本機計算機上取得事件記錄檔。 記錄的 RecordCount 可能是 Null 或零。 此範例會 $_ 使用變數。 如需詳細資訊,請參閱 about_Automatic_Variables

Get-WinEvent -ListLog * -ComputerName localhost | Where-Object { $_.RecordCount }

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14546 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        2990 CxAudioSvcLog
Circular             1052672           9 MSFTVPN Setup
Circular             1052672         282 OAlerts

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 ListLog 參數會使用星號 () * 通配符來顯示每個記錄檔的相關信息。 ComputerName 參數會指定從本機電腦 localhost 取得記錄。 物件會向下傳送至 Cmdlet 的 Where-Object 管線。 Where-Object 會使用 $_.RecordCount 只傳回包含數據的記錄。 $_ 是代表管線中目前物件的變數。 RecordCount 是具有非 Null 值之 對象的屬性。

範例 5:從多部伺服器取得事件記錄

這個範例會取得對象,這些物件代表三部計算機上的 應用程式 事件記錄檔:Server01、Server02 和 Server03。 因為 ComputerName 參數只接受一個值,所以會使用 ForEach 關鍵詞。 如需詳細資訊,請參閱 about_Foreach

$S = 'Server01', 'Server02', 'Server03'
ForEach ($Server in $S) {
  Get-WinEvent -ListLog Application -ComputerName $Server |
    Select-Object LogMode, MaximumSizeInBytes, RecordCount, LogName,
      @{name='ComputerName'; expression={$Server}} |
    Format-Table -AutoSize
}

LogMode MaximumSizeInBytes RecordCount LogName     ComputerName
 ------- ------------------ ----------- -------     ------------
Circular           15532032       14577 Application Server01
Circular           15532032        9689 Application Server02
Circular           15532032        5309 Application Server03

變數$S會儲存三個伺服器的名稱:Server01Server02 和 Server03 ForEach 語句會使用循環來處理每部伺服器 ($Server in $S)。 大括弧中的腳本區塊 ({ }) 執行 Get-WinEvent 命令。 ListLog 參數會指定應用程式記錄檔。 ComputerName 參數會使用 變數$Server,從每部伺服器取得記錄資訊。

物件會向下傳送至 Cmdlet 的 Select-Object 管線。 Select-Object 會取得 LogModeMaximumSizeInBytesRecordCountLogName 屬性,並使用計算運算式來顯示 ComputerName 使用 $Server 變數。 物件會向下傳送至 Cmdlet, Format-Table 以在 PowerShell 控制台中顯示輸出。 AutoSize 參數會格式化輸出以符合螢幕。

範例 6:取得事件記錄提供者和記錄檔名稱

此命令會取得事件記錄提供者及其寫入的記錄檔。

Get-WinEvent -ListProvider *

Name     : .NET Runtime
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 ListProvider 參數會使用星號 (*) 通配符來顯示每個提供者的相關信息。 在輸出中, Name 是提供者, 而 LogLinks 是提供者寫入的記錄。

範例 7:取得寫入特定記錄檔的所有事件記錄提供者

此命令會取得寫入 應用程式 記錄檔的所有提供者。

(Get-WinEvent -ListLog Application).ProviderNames

.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 ListLog 參數會使用 Application 來取得該記錄的物件。 ProviderNames 是 物件的 屬性,並顯示寫入 應用程式 記錄檔的提供者。

範例 8:取得包含特定字串的事件記錄提供者名稱

此命令會取得事件記錄提供者,其中包含提供者名稱中包含特定字串的名稱。

Get-WinEvent -ListProvider *Policy*

Name     : Group Policy Applications
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Client
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Data Sources
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 ListProvider 參數會使用星號 (*) 通配符,在提供者名稱中的任何位置尋找 Policy

範例 9:取得事件提供者產生的事件標識碼

此命令會列出 Microsoft-Windows-GroupPolicy 事件提供者產生的事件標識碼以及事件描述。

(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table Id, Description

Id  Description
  --  -----------
1500  The Group Policy settings for the computer were processed successfully...
1501  The Group Policy settings for the user were processed successfully...
4115  Group Policy Service started.
4116  Started the Group Policy service initialization phase.
4117  Group Policy Session started.

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 ListProvider 參數會指定提供者 Microsoft-Windows-GroupPolicy。 表達式會包裝在括弧中,並使用 Events 屬性來取得物件。 物件會向下傳送至 Cmdlet 的 Format-Table 管線。 Format-Table 會顯示事件對象的 識別碼描述

範例 10:從事件物件屬性取得記錄資訊

此範例示範如何使用事件物件屬性取得記錄檔內容的相關信息。 事件物件會儲存在變數中,然後依 事件標識碼層級分組和計算。

$Event = Get-WinEvent -LogName 'Windows PowerShell'
$Event.Count
$Event | Group-Object -Property Id -NoElement | Sort-Object -Property Count -Descending
$Event | Group-Object -Property LevelDisplayName -NoElement

195

Count  Name
-----  ----
  147  600
   22  400
   21  601
    3  403
    2  103

Count  Name
-----  ----
    2  Warning
  193  Information

Cmdlet Get-WinEvent 會使用 LogName 參數來指定 Windows PowerShell 事件記錄檔。 事件物件會儲存在變數中 $Event 。 的 $EventCount 屬性會顯示記錄事件的總數。

變數 $Event 會向下傳送至 Cmdlet 的 Group-Object 管線。 Group-Object 會使用 Property 參數來指定 Id 屬性,並依事件識別碼值計算物件。 NoElement 參數會從物件輸出中移除其他屬性。 群組物件會向下傳送至 Cmdlet 的 Sort-Object 管線。 Sort-Object 會使用 Property 參數依 Count 排序物件。 遞減參數會依計數顯示輸出,從最高到最低。 在輸出中, Count 數據行包含每個事件的總數。 [名稱] 資料行包含群組的事件標識碼編號。

變數 $Event 會向下傳送至 Cmdlet 的 Group-Object 管線。 Group-Object 會使用 Property 參數來指定 LevelDisplayName 屬性,並依 LevelDisplayName 計算物件。 物件會依 警告資訊等層級分組。 NoElement 參數會從輸出中移除其他屬性。 在輸出中, Count 數據行包含每個事件的總數。 Name 數據行包含分組的 LevelDisplayName

範例 11:取得名稱中有指定字串的錯誤事件

此範例使用以逗號分隔的記錄檔名稱字串。 輸出會依錯誤或警告和記錄名稱等層級分組。

Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* |
  Group-Object -Property LevelDisplayName, LogName -NoElement |
    Format-Table -AutoSize

Count  Name
-----  ----
    1  Error, PowerShellCore/Operational
   26  Information, Microsoft-Windows-Kernel-WHEA/Operational
  488  Information, Microsoft-Windows-PowerShell/Operational
   77  Information, PowerShellCore/Operational
 9835  Information, Windows PowerShell
   19  Verbose, PowerShellCore/Operational
  444  Warning, Microsoft-Windows-PowerShell/Operational
  512  Warning, PowerShellCore/Operational

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 LogName 參數會使用逗號分隔字串搭配星號 () * 通配符來指定記錄檔名稱。 物件會向下傳送至 Cmdlet 的 Group-Object 管線。 Group-Object 使用 Property 參數,依 LevelDisplayNameLogName 將物件分組。 NoElement 參數會從輸出中移除其他屬性。 群組物件會向下傳送至 Cmdlet 的 Format-Table 管線。 Format-Table 會使用 AutoSize 參數來格式化數據行。 Count 數據行包含每個事件的總數。 Name 數據行包含分組的 LevelDisplayNameLogName

範例 12:從封存的事件記錄檔取得事件

Get-WinEvent 可以從儲存的記錄檔取得事件資訊。 此範例會使用儲存在本機計算機上的封存 PowerShell 記錄檔。

Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'

ProviderName: PowerShell

TimeCreated              Id LevelDisplayName  Message
-----------              -- ----------------  -------
3/15/2019 13:54:13      403 Information       Engine state is changed from Available to Stopped...
3/15/2019 13:54:13      400 Information       Engine state is changed from None to Available...
3/15/2019 13:54:13      600 Information       Provider "Variable" is Started...
3/15/2019 13:54:13      600 Information       Provider "Function" is Started...
3/15/2019 13:54:13      600 Information       Provider "FileSystem" is Started...

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 Path 參數會指定目錄和檔名。

範例 13:從封存的事件記錄檔取得特定數目的事件

這些命令會從封存的事件記錄檔取得特定數目的事件。 Get-WinEvent 具有可取得事件數目上限或最舊事件的參數。 此範例會使用儲存在 C:\Test\PowerShellCore Operational.evtx 中的封存 PowerShell 記錄檔。

Get-WinEvent -Path 'C:\Test\PowerShellCore Operational.evtx' -MaxEvents 100

ProviderName: PowerShellCore

TimeCreated                 Id   LevelDisplayName  Message
-----------                 --   ----------------  -------
3/15/2019 09:54:54        4104   Warning           Creating Scriptblock text (1 of 1):...
3/15/2019 09:37:13       40962   Information       PowerShell console is ready for user input
3/15/2019 07:56:24        4104   Warning           Creating Scriptblock text (1 of 1):...
...
3/7/2019 10:53:22        40961   Information       PowerShell console is starting up
3/7/2019 10:53:22         8197   Verbose           Runspace state changed to Opening
3/7/2019 10:53:22         8195   Verbose           Opening RunspacePool

Cmdlet Get-WinEvent 會從計算機取得記錄資訊。 Path 參數會指定目錄和檔名。 MaxEvents 參數會指定顯示 100 筆記錄,從最新到最舊。

範例 14:Windows 的事件追蹤

Windows (ETW 的事件追蹤) 會在事件發生時將事件寫入記錄檔。 事件會依最舊到最新的順序儲存。 封存的 ETW 檔案會儲存為 .etlTraceLog.etl 之類的 。 事件會依寫入記錄檔的順序列出,因此需要 最舊的 參數。

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
  Sort-Object -Property TimeCreated -Descending |
    Select-Object -First 100

Cmdlet Get-WinEvent 會從封存的檔案取得記錄資訊。 Path 參數會指定目錄和檔名。 最舊的參數用來依事件寫入的順序輸出事件,最舊到最新。 物件會向下傳送至 Sort-Object Cmdlet Sort-Object ,依 TimeCreated 屬性的值,以遞減順序排序物件。 物件會向下傳送至 Select-Object 顯示100個最新事件的 Cmdlet。

範例 15:從事件追蹤記錄檔取得事件

此範例示範如何從事件追蹤記錄檔 (.etl) 和封存的 Windows PowerShell 記錄檔 .evtx () 取得事件。 您可以在單一命令中結合多個檔案類型。 由於檔案包含相同類型的 .NET Framework 物件 EventLogRecord,因此您可以使用相同的屬性來篩選這些檔案。 命令需要 最舊的 參數,因為它是從檔案 .etl 讀取,但 最舊的 參數會套用至每個檔案。

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
  Where-Object { $_.Id -eq '403' }

Cmdlet Get-WinEvent 會從封存盤案取得記錄資訊。 Path 參數會使用逗號分隔清單來指定每個檔案目錄和檔名。 最舊的參數用來依事件寫入的順序輸出事件,最舊到最新。 物件會向下傳送至 Cmdlet 的 Where-Object 管線。 Where-Object 會使用腳本區塊來尋找 標識碼為403 的事件。 變數 $_ 代表管線中的目前物件,而 Id 是事件標識符屬性。

範例 16:篩選事件記錄檔結果

此範例示範各種方法,可從事件記錄檔篩選和選取事件。 所有這些命令都會從 Windows PowerShell 事件記錄檔取得過去 24 小時內發生的事件。 篩選方法比使用 Where-Object Cmdlet 更有效率。 篩選條件會在擷取物件時套用。 Where-Object 會擷取所有物件,然後將篩選套用至所有物件。

# Using the Where-Object cmdlet:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -LogName 'Windows PowerShell' | Where-Object { $_.TimeCreated -ge $Yesterday }

# Using the FilterHashtable parameter:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -FilterHashtable @{ LogName='Windows PowerShell'; Level=3; StartTime=$Yesterday }

# Using the FilterXML parameter:
$xmlQuery = @'
<QueryList>
  <Query Id="0" Path="Windows PowerShell">
    <Select Path="System">*[System[(Level=3) and
        TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select>
  </Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery

# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]'
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath $XPath

範例 17:使用 FilterHashtable 從應用程式記錄檔取得事件

此範例會使用 FilterHashtable 參數從 應用程式 記錄檔取得事件。 哈希表會使用 索引鍵/值 組。 如需 FilterHashtable 參數的詳細資訊,請參閱 使用 FilterHashtable 建立 Get-WinEvent 查詢。 如需雜湊表的相關詳細資訊,請參閱 about_Hash_Tables

$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }

Cmdlet Get-Date 會使用 AddDays 方法來取得目前日期之前兩天的日期。 date 物件會儲存在變數中 $Date

Cmdlet 會 Get-WinEvent 取得記錄資訊。 FilterHashtable 參數可用來篩選輸出。 LogName 機碼會將值指定為應用程式記錄檔。 StartTime 索引鍵會使用儲存在 變數中的$Date值。 標識子索引鍵使用事件標識碼值 1003

範例 18:使用 FilterHashtable 取得應用程式錯誤

此範例會使用 FilterHashtable 參數來尋找在上周發生的 Internet Explorer 應用程式錯誤。

$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
  Logname='Application'
  ProviderName='Application Error'
  Data='iexplore.exe'
  StartTime=$StartTime
}

Get-Date Cmdlet 會使用 AddDays 方法來取得目前日期之前七天的日期。 date 物件會儲存在變數中 $StartTime

Cmdlet 會 Get-WinEvent 取得記錄資訊。 FilterHashtable 參數可用來篩選輸出。 LogName 機碼會將值指定為應用程式記錄檔。 ProviderName 機碼會使用值 Application Error,也就是事件的 SourceData 索引鍵會使用值iexplore.exeStartTime 索引鍵會使用儲存在變數中的$StartTime值。

範例 19:使用 SuppressHashFilter 篩選應用程式錯誤

如同上述範例 16,此範例會使用 FilterHashtable 參數從 應用程式 記錄檔取得事件。 不過,我們會新增 SuppressHashFilter 索引鍵來篩選掉 資訊 層級事件。

$Date = (Get-Date).AddDays(-2)
$filter = @{
  LogName='Application'
  StartTime=$Date
  SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter

在此範例中,會從應用程式記錄檔取得過去兩天的所有事件,Get-WinEvent層級為 4 (Information) 除外。

參數

-ComputerName

指定此 Cmdlet 從事件記錄檔取得事件的電腦名稱。 輸入計算機的 NetBIOS 名稱、IP 位址或完整功能變數名稱 (FQDN) 。 預設值為本機計算機 localhost。 此參數一次只能接受一個電腦名稱。

若要從遠端電腦取得事件記錄檔,請設定事件記錄服務的防火牆埠以允許遠端訪問。

此 Cmdlet 不依賴 PowerShell 遠端處理。 即使您的電腦未設定為執行遠端命令,您仍然可以使用 ComputerName 參數。

Type:String
Aliases:Cn
Position:Named
Default value:Local computer
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

指定具有執行此動作權限的使用者帳戶。 預設值為目前使用者。

輸入用戶名稱,例如 User01Domain01\User01。 或者,輸入 PSCredential 物件,例如 Cmdlet 所產生的 Get-Credential 物件。 若您輸入使用者名稱時,會提示您輸入密碼。 如果您只輸入參數名稱,系統會提示您輸入使用者名稱和密碼。

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilterHashtable

指定哈希表格式的查詢,以從一或多個事件記錄檔中選取事件。 查詢包含一或多個 索引鍵/值 組的哈希表。

雜湊資料表查詢有下列規則:

  • 索引鍵和值不區分大小寫。
  • 通配符只有在 與LogNameProviderName 索引鍵相關聯的值中才有效。
  • 每個索引鍵只能在每個哈希表中列出一次。
  • Path 值會採用、 .evt.evtx 記錄檔的路徑.etl
  • LogNamePathProviderName 索引鍵可以在相同的查詢中使用。
  • UserID 金鑰可以採用有效的安全性標識碼 (SID) ,或是可用來建構有效 System.Security.Principal.NTAccount 物件的功能變數名稱
  • [數據] 值會採用未命名字段中的事件數據。 例如,傳統事件記錄檔中的事件。
  • <named-data> 索引鍵代表具名事件數據欄位。

當無法解譯索引鍵/值組時Get-WinEvent,它會將索引鍵解譯為事件中事件數據的區分大小寫名稱。

有效的 Get-WinEvent索引鍵/值 組如下所示:

  • LogName=<String[]>
  • ProviderName=<String[]>
  • 路徑=<String[]>
  • 關鍵 字=<Long[]>
  • Id=<Int32[]>
  • 水準=<Int32[]>
  • StartTime=<DateTime>
  • EndTime=<DateTime>
  • UserID=<SID>
  • 數據=<String[]>
  • <named-data>=<String[]>
  • SuppressHashFilter=<Hashtable>
Type:Hashtable[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilterXml

指定此 Cmdlet 從一或多個事件記錄檔中選取事件的結構化 XML 查詢。

若要產生有效的 XML 查詢,請使用 Windows 事件檢視器 中的 Create 自定義檢視篩選目前的記錄功能。 使用對話方塊中的項目建立查詢,然後按一下 XML 索引標籤來使用 XML 格式檢視查詢。 您也可以從 XML 索引標籤將 XML 複製到 FilterXml 參數的值。 如需事件檢視器功能的詳細資訊,請參閱事件檢視器說明。

使用 XML 查詢來建立包含數個 XPath 語句的複雜查詢。 XML 格式也可讓您使用 隱藏 XML 元素,從查詢中排除事件。 如需事件記錄檔查詢之 XML 架構的詳細資訊,請參閱事件選取專案的查詢架構和 XML 事件查詢一節。

您也可以使用 FilterHashtable 參數建立 Suppress 元素。

Type:XmlDocument
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilterXPath

指定此 Cmdlet 從一或多個記錄檔中選取事件的 XPath 查詢。

如需 XPath 語言的詳細資訊,請參閱事件選取範圍的 XPath 參考和選取範圍篩選一節。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

除了其他事件記錄檔之外,也會取得偵錯和分析記錄檔。 當名稱參數的值包括萬用字元時,Force 參數為取得偵錯或分析記錄檔的必要參數。

根據預設,除非您指定偵錯或分析記錄的完整名稱, Get-WinEvent 否則 Cmdlet 會排除這些記錄。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ListLog

指定事件記錄檔。 以逗號分隔的清單方式輸入事件記錄檔名稱。 允許使用萬用字元。 若要取得所有記錄,請使用星號 () * 通配符。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-ListProvider

指定這個 Cmdlet 取得的事件記錄提供者。 事件記錄檔提供者是將事件寫入事件記錄檔的程式或服務。

以逗號分隔的清單方式輸入提供者名稱。 允許使用萬用字元。 若要取得電腦上所有事件記錄檔的提供者,請使用星號 (*) 通配符。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-LogName

指定此 Cmdlet 從中取得事件的事件記錄。 以逗號分隔的清單方式輸入事件記錄檔名稱。 允許使用萬用字元。 您也可以使用管線將記錄名稱傳送至 Get-WinEvent Cmdlet。

注意

PowerShell 不會限制您可以要求的記錄數量。 不過,Cmdlet 會 Get-WinEvent 查詢限制為 256 的 Windows API。 這會使您一次難以篩選所有記錄。 您可以使用 迴圈逐一 foreach 查看每個記錄,以解決此問題: Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-MaxEvents

指定傳回的事件數目上限。 輸入整數,例如 100。 預設值為傳回記錄檔或檔案中的所有事件。

Type:Int64
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Oldest

指出此 Cmdlet 會以最舊的順序取得事件。 根據預設,事件是最新者先傳回的順序傳回。

需要此參數,才能從 .etl.evt 檔案,以及從偵錯和分析記錄取得事件。 在這些檔案中,事件是以最舊者先記錄的順序記錄,並且只能以最舊者先傳回的順序傳回事件。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

指定這個 Cmdlet 從中取得事件的事件記錄檔路徑。 在使用逗號分隔的清單中輸入記錄檔路徑,或使用萬用字元來建立檔案路徑模式。

Get-WinEvent 支援擴展名為 .evt.evtx.etl 的檔案。 您可以在同一個命令中包含來自不同檔案和檔案類型的事件。

Type:String[]
Aliases:PSPath
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-ProviderName

指定這個 Cmdlet 從中取得事件的事件記錄提供者做為字串陣列。 在使用逗號區隔的清單中輸入提供者名稱,或使用萬用字元來建立提供者名稱模式。

事件記錄檔提供者是將事件寫入事件記錄檔的程式或服務。 這不是 PowerShell 提供者。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

輸入

String

您可以使用管線將 LogName (字串) 至此 Cmdlet。

XmlDocument

您可以使用管線將 FilterXML 查詢傳送至此 Cmdlet。

Hashtable

您可以使用管線將 FilterHashtable 查詢傳送至此 Cmdlet。

輸出

EventLogConfiguration

使用 ListLog 參數時,此 Cmdlet 會傳回 EventLogConfiguration 物件。

EventLogRecord

根據預設,此 Cmdlet 會傳回 EventLogRecord 物件。

ProviderMetadata

使用 ListProvider 參數時,此 Cmdlet 會傳回 ProviderMetadata 物件。

備註

Get-WinEvent 是設計來取代 Get-EventLog 執行 Windows Vista 和更新版本 Windows 之電腦上的 Cmdlet。 Get-EventLog 只會在傳統事件記錄檔中取得事件。 Get-EventLog 保留以提供回溯相容性。

Windows Get-WinEvent 預安裝環境 (Windows PE) 不支援 和 Get-EventLog Cmdlet。