Get-WinEvent
로컬 및 원격 컴퓨터의 이벤트 로그 및 이벤트 추적 로그 파일에서 이벤트를 가져옵니다.
구문
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(Windows용 이벤트 추적)에서 생성된 로그 파일의 이벤트에서 생성된 이벤트 로그에서 데이터를 가져옵니다. 기본적으로 Get-WinEvent
이벤트 정보를 최신에서 가장 오래된 순서로 반환합니다.
Get-WinEvent
는 이벤트 로그 및 이벤트 로그 공급자를 나열합니다. 명령을 중단하려면 Ctrl+C를 누릅니다. 선택한 로그 또는 선택한 이벤트 공급자가 생성한 로그에서 이벤트를 가져올 수 있습니다. 하나의 명령에 여러 원본의 이벤트를 결합할 수도 있습니다.
Get-WinEvent
XPath 쿼리, 구조적 XML 쿼리 및 해시 테이블 쿼리를 사용하여 이벤트를 필터링할 수 있습니다.
관리자 권한으로 PowerShell을 실행하지 않는 경우 로그에 대한 정보를 검색할 수 없다는 오류 메시지가 표시될 수 있습니다.
예제
예제 1: 로컬 컴퓨터에서 모든 로그 가져오기
이 명령은 로컬 컴퓨터의 모든 이벤트 로그를 가져옵니다. 로그는 로그를 가져오는 순서대로 Get-WinEvent
나열됩니다. 클래식 로그가 먼저 검색된 후 새 Windows 이벤트 로그가 표시됩니다.
로그 의 RecordCount 가 null이거나 비어 있거나 0일 수 있습니다.
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 속성은 개체에서 1GB로 설정됩니다. SaveChanges 메서드는 액세스 위반을 처리하기 위해 try 블록 내의 시스템에 변경 사항을 푸시하기 위해 호출됩니다. cmdlet은 Get-WinEvent
보안 로그에서 다시 호출되고 cmdlet에 Format-List
파이프되어 MaximumSizeInBytes 속성이 컴퓨터에 저장되었는지 확인합니다.
예제 4: 서버에서 이벤트 로그 가져오기
이 명령은 이벤트를 포함하는 로컬 컴퓨터에서만 이벤트 로그를 가져옵니다. 로그 의 RecordCount 가 null 또는 0일 수 있습니다. 이 예제에서는 변수를 $_
사용합니다. 자세한 내용은 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
는 서버01, Server02 및 Server03이라는 세 개의 서버 이름을 저장합니다. ForEach 문은 루프를 사용하여 각 서버를 ($Server in $S)
처리합니다. 중괄호({ }
)의 스크립트 블록이 명령을 실행합니다 Get-WinEvent
. ListLog 매개 변수는 애플리케이션 로그를 지정합니다. ComputerName 매개 변수는 변수 $Server
를 사용하여 각 서버에서 로그 정보를 가져옵니다.
개체는 파이프라인 아래로 cmdlet으로 Select-Object
전송됩니다. Select-Object
LogMode, MaximumSizeInBytes, RecordCount, LogName 속성을 가져오고 계산된 식을 사용하여 변수를 사용하여 ComputerName을 $Server
표시합니다. 개체는 PowerShell 콘솔에 출력을 Format-Table
표시하기 위해 파이프라인을 cmdlet으로 보냅니다. 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 매개 변수는 별표(*
) 와일드카드를 사용하여 각 공급자에 대한 정보를 표시합니다. 출력 에서 이름은 공급자이고 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 매개 변수는 별표(*
) 와일드카드를 사용하여 공급자 이름 내의 아무 곳이나 정책을 찾습니다.
예제 9: 이벤트 공급자가 생성하는 이벤트 ID 가져오기
이 명령은 Microsoft-Windows-GroupPolicy 이벤트 공급자가 이벤트 설명과 함께 생성하는 이벤트 ID를 나열합니다.
(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
는 이벤트 개체의 ID 및 설명을 표시합니다.
예제 10: 이벤트 개체 속성에서 로그 정보 가져오기
이 예제에서는 이벤트 개체 속성을 사용하여 로그의 내용에 대한 정보를 가져오는 방법을 보여 줍니다. 이벤트 개체는 변수에 저장되고 이벤트 ID 및 수준별로 그룹화되고 계산됩니다.
$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
저장됩니다. Count 속성$Event
은 기록된 총 이벤트 수를 보여 줍니다.
변수가 $Event
파이프라인 아래로 cmdlet으로 Group-Object
전송됩니다. Group-Object
는 Property 매개 변수를 사용하여 Id 속성을 지정하고 이벤트 ID 값으로 개체 수를 계산합니다. NoElement 매개 변수는 개체 출력에서 다른 속성을 제거합니다. 그룹화된 개체는 파이프라인 아래로 cmdlet으로 Sort-Object
전송됩니다. Sort-Object
는 Property 매개 변수를 사용하여 Count별로 개체를 정렬합니다. 내림차순 매개 변수는 출력을 개수별로 가장 높은 값에서 가장 낮은 값으로 표시합니다. 출력 에서 Count 열에는 각 이벤트의 총 수가 포함됩니다. 이름 열에는 그룹화된 이벤트 ID 번호가 포함됩니다.
변수가 $Event
파이프라인 아래로 cmdlet으로 Group-Object
전송됩니다. Group-Object
는 Property 매개 변수를 사용하여 LevelDisplayName 속성을 지정하고 LevelDisplayName별로 개체 수를 계산합니다. 개체는 경고 및 정보와 같은 수준으로 그룹화됩니다.
NoElement 매개 변수는 출력에서 다른 속성을 제거합니다. 출력 에서 Count 열에는 각 이벤트의 총 수가 포함됩니다. 이름 열에는 그룹화된 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 매개 변수를 사용하여 LevelDisplayName 및 LogName별로 개체를 그룹화합니다. NoElement 매개 변수는 출력에서 다른 속성을 제거합니다. 그룹화된 개체는 파이프라인 아래로 cmdlet으로 Format-Table
전송됩니다. Format-Table
에서는 AutoSize 매개 변수를 사용하여 열의 서식을 지정합니다. Count 열에는 각 이벤트의 총 수가 포함됩니다. 이름 열에는 그룹화된 LevelDisplayName 및 LogName이 포함됩니다.
예제 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용 이벤트 추적
ETW(Windows용 이벤트 추적)는 이벤트가 발생할 때 로그에 이벤트를 씁니다. 이벤트는 가장 오래된 것에서 최신 순서로 저장됩니다. 보관된 ETW 파일은 TraceLog.etl과 같이 저장 .etl
됩니다.
이벤트는 로그에 기록되는 순서대로 나열되므로 가장 오래된 매개 변수가 필요합니다.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
Sort-Object -Property TimeCreated -Descending |
Select-Object -First 100
cmdlet은 Get-WinEvent
보관된 파일에서 로그 정보를 가져옵니다. Path 매개 변수는 디렉터리 및 파일 이름을 지정합니다. 가장 오래된 매개 변수는 기록된 순서대로 이벤트를 출력하는 데 사용되며, 가장 오래된 매개 변수에서 최신으로 출력됩니다. 개체는 파이프라인 Sort-Object
아래로 전송되어 timeCreated Sort-Object
속성 값에 따라 개체를 내림차순으로 정렬합니다. 개체는 100개의 최신 이벤트를 표시하는 cmdlet으로 파이프라인 Select-Object
아래로 전송됩니다.
예제 15: 이벤트 추적 로그에서 이벤트 가져오기
이 예제에서는 이벤트 추적 로그 파일() 및 보관된 Windows PowerShell 로그 파일(.etl
.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
는 스크립트 블록을 사용하여 ID가 403인 이벤트를 찾습니다. 변수는 $_
파이프라인의 현재 개체를 나타내고 ID 는 이벤트 ID 속성입니다.
예제 16: 이벤트 로그 결과 필터링
이 예제에서는 이벤트 로그에서 이벤트를 필터링하고 선택하는 다양한 방법을 보여 줍니다. 이러한 모든 명령은 Windows PowerShell 이벤트 로그에서 지난 24시간 동안 발생한 이벤트를 가져옵니다.
필터 메서드는 cmdlet을 Where-Object
사용하는 것보다 더 효율적입니다. 필터는 개체가 검색될 때 적용됩니다. 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 메서드를 사용하여 현재 날짜 2일 전의 날짜를 가져옵니다. date 개체는 변수에 $Date
저장됩니다.
cmdlet은 Get-WinEvent
로그 정보를 가져옵니다. FilterHashtable 매개 변수는 출력을 필터링하는 데 사용됩니다. LogName 키는 이 값을 애플리케이션 로그로 지정합니다. StartTime 키는 변수에 $Date
저장된 값을 사용합니다. ID 키는 이벤트 ID 값 1003을 사용합니다.
예제 18: FilterHashtable을 사용하여 애플리케이션 오류 가져오기
이 예제에서는 FilterHashtable 매개 변수를 사용하여 지난 주 내에 발생한 Internet Explorer 애플리케이션 오류를 찾습니다.
$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
Logname='Application'
ProviderName='Application Error'
Data='iexplore.exe'
StartTime=$StartTime
}
이 cmdlet은 Get-Date
AddDays 메서드를 사용하여 현재 날짜 7일 이전의 날짜를 가져옵니다. date 개체는 변수에 $StartTime
저장됩니다.
cmdlet은 Get-WinEvent
로그 정보를 가져옵니다. FilterHashtable 매개 변수는 출력을 필터링하는 데 사용됩니다. LogName 키는 이 값을 애플리케이션 로그로 지정합니다. ProviderName 키는 이벤트의 원본인 애플리케이션 오류 값을 사용합니다. 데이터 키는 값을 iexplore.exe StartTime 키는 변수에 $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(정보)를 제외한 지난 2일 동안의 애플리케이션 로그에서 모든 이벤트를 가져옵니다.
매개 변수
-ComputerName
이 cmdlet이 이벤트 로그에서 이벤트를 가져오는 컴퓨터의 이름을 지정합니다. 컴퓨터의 NetBIOS 이름, IP 주소 또는 FQDN(정규화된 도메인 이름)을 입력합니다. 기본값은 로컬 컴퓨터 localhost입니다. 이 매개 변수는 한 번에 하나의 컴퓨터 이름만 허용합니다.
원격 컴퓨터에서 이벤트 로그를 얻으려면 원격 액세스를 허용하도록 이벤트 로그 서비스에 대한 방화벽 포트를 구성합니다.
이 cmdlet은 PowerShell 원격을 사용하지 않습니다. 컴퓨터가 원격 명령을 실행하도록 구성되지 않은 경우에도 ComputerName 매개 변수를 사용할 수 있습니다.
형식: | String |
별칭: | Cn |
Position: | Named |
Default value: | Local computer |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Credential
이 작업을 수행할 권한이 있는 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.
User01 또는 Domain01\User01과 같은 사용자 이름을 입력합니다. 또는 cmdlet에서 생성된 개체와 같은 PSCredential 개체를 Get-Credential
입력합니다. 사용자 이름을 입력하면 암호를 입력하라는 메시지가 표시됩니다. 매개 변수 이름만 입력하면 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.
형식: | PSCredential |
Position: | Named |
Default value: | Current user |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-FilterHashtable
하나 이상의 이벤트 로그에서 이벤트를 선택하는 해시 테이블 형식의 쿼리를 지정합니다. 쿼리에는 하나 이상의 키/값 쌍이 있는 해시 테이블이 포함되어 있습니다.
해시 테이블 쿼리에는 다음과 같은 규칙이 있습니다.
- 키와 값은 대/소문자를 구분하지 않습니다.
- 와일드카드 문자는 LogName 및 ProviderName 키와 연결된 값에서만 유효합니다.
- 각 키는 각 해시 테이블에 한 번만 나열할 수 있습니다.
- 경로 값은 경로
.evtx
.evt
및 로그 파일에 대한.etl
경로를 사용합니다. - LogName, Path 및 ProviderName 키는 동일한 쿼리에서 사용할 수 있습니다.
- UserID 키는 유효한 System.Security.Principal.NTAccount 개체를 생성하는 데 사용할 수 있는 유효한 SID(보안 식별자) 또는 도메인 계정 이름을 사용할 수 있습니다.
- 데이터 값은 이름 없는 필드에서 이벤트 데이터를 가져옵니다. 예를 들어 클래식 이벤트 로그의 이벤트입니다.
<named-data>
키는 명명된 이벤트 데이터 필드를 나타냅니다.
키/값 쌍을 해석할 수 없는 경우 Get-WinEvent
키는 이벤트의 이벤트 데이터에 대/소문자를 구분하는 이름으로 해석합니다.
유효한 Get-WinEvent
키/값 쌍은 다음과 같습니다.
- LogName=
<String[]>
- ProviderName=
<String[]>
- Path=
<String[]>
- 키워드=
<Long[]>
- ID=
<Int32[]>
- 수준=
<Int32[]>
- StartTime=
<DateTime>
- EndTime=
<DateTime>
- UserID=
<SID>
- Data=
<String[]>
<named-data>
=<String[]>
- SuppressHashFilter=
<Hashtable>
형식: | Hashtable[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-FilterXml
이 cmdlet이 하나 이상의 이벤트 로그에서 이벤트를 선택하는 구조적 XML 쿼리를 지정합니다.
유효한 XML 쿼리를 생성하려면 Windows 이벤트 뷰어 사용자 지정 보기 만들기 및 현재 로그 필터링 기능을 사용합니다. 대화 상자의 항목을 사용하여 쿼리를 만든 다음 XML 탭을 클릭하여 XML 형식으로 쿼리를 봅니다. XML 탭에서 FilterXml 매개 변수 값으로 XML을 복사할 수 있습니다. 이벤트 뷰어 기능에 대한 자세한 내용은 이벤트 뷰어 도움말을 참조하세요.
XML 쿼리를 사용하여 여러 XPath 문이 포함된 복잡한 쿼리를 만듭니다. XML 형식을 사용하면 쿼리에서 이벤트를 제외하는 SUPPRESS XML 요소를 사용할 수도 있습니다. 이벤트 로그 쿼리에 대한 XML 스키마에 대한 자세한 내용은 이벤트 선택의 쿼리 스키마 및 XML 이벤트 쿼리 섹션을 참조하세요.
FilterHashtable 매개 변수를 사용하여 Suppress 요소를 만들 수도 있습니다.
형식: | XmlDocument |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-FilterXPath
이 cmdlet이 하나 이상의 로그에서 이벤트를 선택하는 XPath 쿼리를 지정합니다.
XPath 언어에 대한 자세한 내용은 이벤트 선택의 XPath 참조 및 선택 필터 섹션을 참조하세요.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Force
다른 이벤트 로그 외에도 디버그 및 분석 로그를 가져옵니다. Force 매개 변수는 이름 매개 변수 값에 와일드카드 문자가 포함된 경우 디버그 또는 분석 로그를 가져오는 데 필요합니다.
기본적으로 cmdlet은 Get-WinEvent
디버그 또는 분석 로그의 전체 이름을 지정하지 않는 한 이러한 로그를 제외합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ListLog
이벤트 로그를 지정합니다. 쉼표로 구분된 목록에 이벤트 로그 이름을 입력합니다. 와일드카드가 허용됩니다. 모든 로그를 얻으려면 별표(*
) 와일드카드를 사용합니다.
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-ListProvider
이 cmdlet이 가져오는 이벤트 로그 공급자를 지정합니다. 이벤트 로그 공급자는 이벤트 로그에 이벤트를 기록하는 프로그램 또는 서비스이며
공급자 이름을 쉼표로 구분된 목록으로 입력합니다. 와일드카드가 허용됩니다. 컴퓨터의 모든 이벤트 로그 공급자를 얻으려면 별표(*
) 와일드카드를 사용합니다.
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | True |
-LogName
이 cmdlet에서 이벤트를 가져오는 이벤트 로그를 지정합니다. 쉼표로 구분된 목록에 이벤트 로그 이름을 입력합니다. 와일드카드가 허용됩니다. 로그 이름을 cmdlet에 Get-WinEvent
파이프할 수도 있습니다.
참고 항목
PowerShell은 요청할 수 있는 로그의 양을 제한하지 않습니다. 그러나 cmdlet은 Get-WinEvent
256으로 제한되는 Windows API를 쿼리합니다. 이렇게 하면 모든 로그를 한 번에 필터링하기가 어려울 수 있습니다. 루프를 사용하여 다음과 같이 각 로그를 foreach
반복하여 이 작업을 수행할 수 있습니다. Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | True |
-MaxEvents
반환되는 최대 이벤트 수를 지정합니다. 정수(예: 100)를 입력합니다. 기본값은 로그 또는 파일의 모든 이벤트를 반환하는 것입니다.
형식: | Int64 |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Oldest
이 cmdlet은 이벤트를 가장 오래된 순서로 가져옵니다. 기본적으로 이벤트는 최신 순서로 반환됩니다.
이 매개 변수는 디버그 및 .evt
분석 로그와 파일에서 .etl
이벤트를 가져오는 데 필요합니다. 이러한 파일에서 이벤트는 가장 오래된 순서로 기록되며 이벤트는 가장 오래된 순서로만 반환될 수 있습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Path
이 cmdlet에서 이벤트를 가져오는 이벤트 로그 파일의 경로를 지정합니다. 쉼표로 구분된 목록에 로그 파일의 경로를 입력하거나 와일드카드 문자를 사용하여 파일 경로 패턴을 만듭니다.
Get-WinEvent
는 , .evtx
및 .etl
파일 이름 확장명을 가진 .evt
파일을 지원합니다. 동일한 명령에 다른 파일 및 파일 형식의 이벤트를 포함할 수 있습니다.
형식: | String[] |
별칭: | PSPath |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | True |
-ProviderName
이 cmdlet이 이벤트를 가져오는 이벤트 로그 공급자를 문자열 배열로 지정합니다. 쉼표로 구분된 목록에 공급자 이름을 입력하거나 와일드카드 문자를 사용하여 공급자 이름 패턴을 만듭니다.
이벤트 로그 공급자는 이벤트 로그에 이벤트를 기록하는 프로그램 또는 서비스이며 PowerShell 공급자가 아닙니다.
형식: | String[] |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | True |
입력
LogName(문자열)을 이 cmdlet으로 파이프할 수 있습니다.
FilterXML 쿼리를 이 cmdlet으로 파이프할 수 있습니다.
FilterHashtable 쿼리를 이 cmdlet으로 파이프할 수 있습니다.
출력
ListLog 매개 변수를 사용하여 이 cmdlet은 EventLogConfiguration 개체를 반환합니다.
기본적으로 이 cmdlet은 EventLogRecord 개체를 반환합니다.
ListProvider 매개 변수를 사용하여 이 cmdlet은 ProviderMetadata 개체를 반환합니다.
참고
Get-WinEvent
는 Windows Vista 이상 버전의 Windows를 Get-EventLog
실행하는 컴퓨터에서 cmdlet을 대체하도록 설계되었습니다. Get-EventLog
는 클래식 이벤트 로그에서만 이벤트를 가져옵니다. Get-EventLog
는 이전 버전과의 호환성을 위해 유지됩니다.
Get-WinEvent
Windows PE(Windows 사전 설치 환경)에서는 cmdlet 및 Get-EventLog
cmdlet이 지원되지 않습니다.
관련 링크
PowerShell