Get-WinEvent
로컬 및 원격 컴퓨터의 이벤트 로그 및 이벤트 추적 로그 파일에서 이벤트를 가져옵니다.
구문
Get-WinEvent [-LogName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-Path] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-ProviderName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent -FilterHashTable <Hashtable[]> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-ListLog] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]
Get-WinEvent [-ListProvider] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]
Get-WinEvent -FilterXml <XmlDocument> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
설명
Get-WinEvent cmdlet은 시스템 로그 및 응용 프로그램 로그와 같은 기본 로그와 Windows Vista에 새로 도입된 Windows 이벤트 로그 기술로 생성된 이벤트 로그에서 이벤트를 가져옵니다. 이 cmdlet은 ETW(Windows용 이벤트 추적)로 생성된 로그 파일의 이벤트도 가져옵니다.
매개 변수를 지정하지 않을 경우 Get-WinEvent 명령은 컴퓨터의 모든 이벤트 로그에서 모든 이벤트를 가져옵니다. 명령을 중단하려면 Ctrl+C를 누릅니다.
Get-WinEvent는 이벤트 로그 및 이벤트 로그 공급자도 나열합니다. 선택한 로그나 선택한 이벤트 공급자를 통해 생성된 로그에서 이벤트를 가져올 수 있습니다. 단일 명령을 사용하여 여러 소스의 이벤트를 결합할 수도 있습니다. Get-WinEvent를 사용하면 XPath 쿼리, 구조화된 XML 쿼리 및 간단한 해시 테이블 쿼리를 사용하여 이벤트를 필터링할 수 있습니다.
참고: Get-WinEvent를 사용하려면 Windows Vista, Windows Server 2008 R2 이상 버전이 필요합니다. 또한 Microsoft .NET Framework 3.5 이상 버전도 필요합니다.
매개 변수
-ComputerName <string>
지정된 컴퓨터의 이벤트 로그에서 이벤트를 가져옵니다. 컴퓨터의 NetBIOS 이름, IP(인터넷 프로토콜) 주소 또는 정규화된 도메인 이름을 입력합니다. 기본값은 로컬 컴퓨터입니다.
이 매개 변수는 한 번에 하나의 컴퓨터 이름만 받습니다. 여러 컴퓨터에서 이벤트 로그 또는 이벤트를 찾으려면 ForEach 문을 사용합니다. 이 매개 변수에 대한 자세한 내용은 예를 참조하십시오.
원격 컴퓨터에서 이벤트 및 이벤트 로그를 가져오려면 원격 액세스를 허용하도록 이벤트 로그 서비스에 대한 방화벽 포트를 구성해야 합니다.
이 매개 변수는 Windows PowerShell 원격에 독립적입니다. 원격 명령을 실행하도록 컴퓨터를 구성하지 않은 경우에도 ComputerName 매개 변수를 사용할 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Credential <PSCredential>
이 작업을 수행할 수 있는 권한을 가진 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.
User01 또는 Domain01\User01과 같은 사용자 이름을 입력합니다. 또는 Get-Credential cmdlet에 의해 생성된 개체와 같은 PSCredential 개체를 입력합니다. 사용자 이름을 입력하면 암호를 묻는 메시지가 표시됩니다. 매개 변수 이름만 입력하면 사용자 이름 및 암호를 둘 다 묻는 메시지가 표시됩니다.
필수 여부 |
false |
위치 |
named |
기본값 |
Current user |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-FilterHashTable <Hashtable[]>
해시 테이블 형식의 쿼리를 사용하여 하나 이상의 이벤트 로그에서 이벤트를 선택합니다. 하나 이상의 키-값 쌍이 있는 해시 테이블이 쿼리에 포함됩니다.
해시 테이블 쿼리의 규칙은 다음과 같습니다.
-- 키와 값은 대/소문자를 구분하지 않습니다.
-- 와일드카드 문자는 LogName 및 ProviderName 키와 연결된 값에서만 사용할 수 있습니다.
-- 각 키는 각 해시 테이블에서 한 번만 나열될 수 있습니다.
-- Path 값에는 .etl, .evt 및 .evtx 로그 파일의 경로가 사용됩니다.
-- LogName, Path 및 ProviderName 키를 동일한 쿼리에 사용할 수 있습니다.
-- UserID 키에는 유효한 System.Security.Principal.NTAccount 개체를 생성하는 데 사용할 수 있는 유효한 SID(보안 식별자) 또는 도메인 계정 이름이 사용될 수 있습니다.
-- Data 값에는 명명되지 않은 필드의 이벤트 데이터가 사용됩니다. 기본 이벤트 로그의 이벤트용입니다.
-- * 키는 명명된 이벤트 데이터 필드를 나타냅니다.
Get-WinEvent는 키-값 쌍을 해석할 수 없는 경우 이벤트의 이벤트 데이터에 대한 대/소문자를 구분하는 이름으로 키를 해석합니다.
유효한 키-값 쌍은 다음과 같습니다.
-- LogName=<String[]>
-- ProviderName=<String[]>
-- Path=<String[]>
-- Keywords=<Long[]>
-- ID=<Int32[]>
-- Level=<Int32[]>
-- StartTime=<DateTime>
-- EndTime=<DataTime>
-- UserID=<SID>
-- Data=<String[]>
-- *=<String[]>
필수 여부 |
true |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
false |
-FilterXml <XmlDocument>
구조화된 XML 쿼리를 사용하여 하나 이상의 이벤트 로그에서 이벤트를 선택합니다.
유효한 XML 쿼리를 생성하려면 이벤트 뷰어에서 보기 만들기 및 현재 로그 필터링 기능을 사용합니다. 대화 상자의 항목을 사용하여 쿼리를 만든 다음 XML 탭을 클릭하여 XML 형식으로 쿼리를 봅니다. XML을 XML 탭에서 FilterXml 매개 변수 값으로 복사할 수 있습니다. 이벤트 뷰어 기능에 대한 자세한 내용은 이벤트 뷰어 도움말을 참조하십시오.
일반적으로 XML 쿼리를 사용하여 여러 XPath 문을 포함하는 복잡한 쿼리를 만듭니다. 또한 XML 형식을 사용하면 쿼리에서 이벤트를 제외하는 "Suppress" XML 요소를 사용할 수 있습니다. 이벤트 로그 쿼리의 XML 스키마에 대한 자세한 내용은 MSDN(Microsoft Developer Network) 라이브러리의 다음 항목을 참조하십시오.
-- "Query Schema(쿼리 스키마)": https://go.microsoft.com/fwlink/?LinkId=143685
-- "Event Selection(이벤트 선택)"의 "XML Event Queries(XML 이벤트 쿼리)": https://go.microsoft.com/fwlink/?LinkID=143608
필수 여부 |
true |
위치 |
named |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
false |
-FilterXPath <string>
XPath 쿼리를 사용하여 하나 이상의 로그에서 이벤트를 선택합니다.
XPath 언어에 대한 자세한 내용은 MSDN 라이브러리에서 "XPath 참조"를 참조하거나 "Event Selection(이벤트 선택)"의 "Selection Filters(선택 필터)"를 참조하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Force <switch>
다른 이벤트 로그와 함께 디버그 및 분석 로그를 가져옵니다. Force 매개 변수는 name 매개 변수의 값에 와일드카드 문자가 포함된 경우 디버그 또는 분석 로그를 가져오는 데 필요합니다.
기본적으로 Get-WinEvent에서는 디버그 또는 분석 로그의 전체 이름이 지정되지 않는 한 이러한 로그를 제외합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
Debugging and analytic logs are not returned in response to queries that use wildcard characters. |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-ListLog <string[]>
지정된 이벤트 로그를 가져옵니다. 이벤트 로그 이름을 쉼표로 구분된 목록으로 입력합니다. 와일드카드를 사용할 수 있습니다. 모든 로그를 가져오려면 * 값을 입력합니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
true |
-ListProvider <string[]>
지정된 이벤트 로그 공급자를 가져옵니다. 이벤트 로그 공급자는 이벤트 로그에 이벤트를 기록하는 프로그램 또는 서비스입니다.
공급자 이름을 쉼표로 구분된 목록으로 입력합니다. 와일드카드를 사용할 수 있습니다. 컴퓨터에 있는 모든 이벤트 로그의 공급자를 가져오려면 * 값을 입력합니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
true |
-LogName <string[]>
지정된 이벤트 로그에서 이벤트를 가져옵니다. 이벤트 로그 이름을 쉼표로 구분된 목록으로 입력합니다. 와일드카드를 사용할 수 있습니다. 또한 로그 이름을 Get-WinEvent로 파이프할 수 있습니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
true |
-MaxEvents <int64>
Get-WinEvent가 반환하는 최대 이벤트 수를 지정합니다. 정수를 입력합니다. 기본값은 로그 또는 파일의 모든 이벤트를 반환하는 것입니다.
필수 여부 |
false |
위치 |
named |
기본값 |
All events |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Oldest
오래된 것 먼저 순서로 이벤트를 반환합니다. 기본적으로 이벤트는 최신 것 먼저 순서로 반환됩니다.
이 매개 변수는 .etl 및 .evt 파일, 그리고 디버그 및 분석 로그에서 이벤트를 가져올 때 필요합니다. 이 파일에서 이벤트는 오래된 것 먼저 순서로 기록되며 오래된 것 먼저 순서로만 반환될 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Path <string[]>
지정된 이벤트 로그 파일에서 이벤트를 가져옵니다. 로그 파일의 경로를 쉼표로 구분된 목록으로 입력하거나 와일드카드 문자를 사용하여 파일 경로 패턴을 만듭니다.
Get-WinEvent는 .evt, .evtx 및 .etl 파일 이름 확장명이 지정된 파일을 지원합니다. 다양한 파일 및 파일 형식의 이벤트를 동일한 명령에 포함할 수 있습니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
true |
-ProviderName <string[]>
지정된 이벤트 로그 공급자에 의해 기록된 이벤트를 가져옵니다. 공급자 이름을 쉼표로 구분된 목록으로 입력하거나 와일드카드 문자를 사용하여 공급자 이름 패턴을 만듭니다.
이벤트 로그 공급자는 이벤트 로그에 이벤트를 기록하는 프로그램 또는 서비스이며 Windows PowerShell 공급자가 아닙니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
없음 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
true |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.String, System.Xml.XmlDocument, System.Collections.Hashtable. LogName(문자열), FilterXML 쿼리 또는 FilterHashTable 쿼리를 Get-WinEvent로 파이프할 수 있습니다. |
출력 |
System.Diagnostics.Eventing.Reader.EventLogConfiguration, System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics.Eventing.Reader.ProviderMetadata ListLog 매개 변수를 사용하는 경우 Get-WinEvent는 System.Diagnostics.Eventing.Reader.EventLogConfiguration 개체를 반환합니다. ListProvider 매개 변수를 사용하는 경우에는 Get-WinEvent가 System.Diagnostics.Eventing.Reader.ProviderMetadata 개체를 반환합니다. 다른 모든 매개 변수를 사용할 경우 Get-WinEvent는 System.Diagnostics.Eventing.Reader.EventLogRecord 개체를 반환합니다. |
참고
Get-WinEvent는 Windows Vista 이상 버전을 실행하는 컴퓨터에서 Get-EventLog cmdlet 대신 사용되도록 설계되었습니다. Get-EventLog는 기본 이벤트 로그에서만 이벤트를 가져옵니다. Windows Vista 이전 시스템의 Windows PowerShell 2.0에서는 Get-EventLog가 유지됩니다.
예 1
C:\PS>get-winevent -listlog *
설명
-----------
이 명령은 로컬 컴퓨터의 모든 로그를 가져옵니다.
로그는 Get-WinEvent가 가져오는 순서대로 나열됩니다. 일반적으로 기본 로그가 먼저 검색된 다음 새 Windows 이벤트 로그가 검색됩니다.
이벤트 로그 수는 일반적으로 100개가 넘으므로 이 매개 변수에는 로그 이름 또는 이름 패턴이 필요합니다. 모든 로그를 가져오려면 *를 사용합니다.
예 2
C:\PS>get-winevent -listlog Setup | format-list -property *
FileSize : 69632
IsLogFull : False
LastAccessTime : 2/14/2008 12:55:12 AM
LastWriteTime : 7/9/2008 3:12:05 AM
OldestRecordNumber : 1
RecordCount : 3
LogName : Setup
LogType : Operational
LogIsolation : Application
IsEnabled : True
IsClassicLog : False
SecurityDescriptor : O:BAG:SYD:(A;;0xf0007;;;SY)(A;
(A;;0x1;;;S-1-5-32-573)
LogFilePath : %SystemRoot%\System32\Winevt\L
MaximumSizeInBytes : 1052672
LogMode : Circular
OwningProviderName : Microsoft-Windows-Eventlog
ProviderNames : {Microsoft-Windows-WUSA, Micro
ProviderLevel :
ProviderKeywords :
ProviderBufferSize : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency : 1000
ProviderControlGuid :
설명
-----------
이들 명령은 로컬 컴퓨터의 기본 시스템 로그를 나타내는 개체를 가져옵니다. 이 개체에는 크기, 이벤트 로그 공급자, 파일 경로 및 사용 여부를 비롯한 로그에 대한 유용한 정보가 포함됩니다.
예 3
C:\PS>get-winevent -listlog * -computername Server01| where {$_.recordcount}
설명
-----------
이 명령은 이벤트가 있는 Server01 컴퓨터의 이벤트 로그만 가져옵니다. 많은 로그가 비어 있을 수 있습니다.
이 명령은 ListLog 매개 변수 사용 시 Get-WinEvent가 반환하는 EventLogConfiguration 개체의 RecordCount 속성을 사용합니다.
예 4
C:\PS>$s = "Server01", "Server02", "Server03"
C:\PS> foreach ($server in $s)
{$server; get-winevent -listlog "Windows PowerShell" -computername $server}
설명
-----------
이 예의 명령은 Server01, Server02 및 Server03 컴퓨터의 Windows PowerShell 이벤트 로그를 나타내는 개체를 가져옵니다. ComputerName 매개 변수는 값을 하나만 가져오므로 이 명령은 Foreach 키워드를 사용합니다.
첫 번째 명령은 컴퓨터의 이름을 $s 변수에 저장합니다.
두 번째 명령은 Foreach 문을 사용합니다. 이 명령은 $s 변수에 있는 각 컴퓨터에 대해 스크립트 블록(중괄호 안)에 있는 명령을 수행합니다. 이 명령은 먼저 컴퓨터의 이름을 출력한 다음 Get-WinEvent 명령을 실행하여 Windows PowerShell 로그를 나타내는 개체를 가져옵니다.
예 5
C:\PS>get-winevent -listprovider *
설명
-----------
이 명령은 로컬 컴퓨터의 이벤트 로그 공급자와 이러한 공급자가 기록하는 로그(있을 경우)를 가져옵니다.
예 6
C:\PS>(get-winevent -listlog Application).providernames
설명
-----------
이 명령은 로컬 컴퓨터의 응용 프로그램 로그에 기록하는 모든 공급자를 가져옵니다.
예 7
C:\PS>>get-winevent -listprovider *policy*
설명
-----------
이 명령은 이름에 "policy"라는 단어가 포함된 이벤트 로그 공급자를 가져옵니다.
예 8
C:\PS>(get-winevent -listprovider microsoft-windows-grouppolicy).events | format-table id, description -auto
설명
-----------
이 명령은 Microsoft-Windows-GroupPolicy 이벤트 공급자가 생성하는 이벤트 ID를 해당 이벤트 설명과 함께 나열합니다.
이 명령은 ListProvider 매개 변수 사용 시 Get-WinEvent가 반환하는 개체의 Events 속성과 Events 속성에 있는 개체의 ID 및 Description 속성을 사용합니다.
예 9
C:\PS>$events = get-winevent -logname "Windows PowerShell"
C:\PS> $events.count
195
C:\PS> $events | group-object id -noelement | sort-object count -desc
Count Name
----- ----
147 600
22 400
21 601
3 403
2 103
C:\PS> $events | group-object leveldisplayname -noelement
Count Name
----- ----
2 Warning
193 Information
설명
-----------
이 예에서는 Get-WinEvent가 반환하는 이벤트 개체의 속성을 사용하여 이벤트 로그의 이벤트에 대한 정보를 가져오는 방법을 보여 줍니다.
첫 번째 명령은 Get-WinEvent cmdlet을 사용하여 Windows PowerShell 이벤트 로그의 모든 이벤트를 가져와 $events 변수에 저장합니다. 로그 이름은 공백을 포함하므로 따옴표로 묶입니다.
두 번째 명령은 개체 컬렉션의 Count 속성을 사용하여 이벤트 로그에 있는 항목 수를 찾습니다.
세 번째 명령은 로그에 있는 각 발생 이벤트를 가장 많이 발생한 이벤트부터 표시합니다. 이 예에서는 이벤트 ID 600이 가장 많이 발생했습니다.
네 번째 명령은 항목을 LevelDisplayName 속성 값을 기준으로 그룹화하여 로그에 있는 Error, Warning 및 Information 이벤트 수를 표시합니다.
예 10
C:\PS>get-winevent -logname *disk*, Microsoft-Windows-Kernel-WHEA
설명
-----------
이 명령은 컴퓨터의 모든 이벤트 로그와 Microsoft-Windows-Kernel-WHEA 이벤트 로그에서 이름에 "disk"가 포함된 오류 이벤트를 가져옵니다.
예 11
C:\PS>get-winevent -path 'c:\ps-test\Windows PowerShell.evtx'
설명
-----------
이 명령은 테스트 디렉터리에 있는 Windows PowerShell 이벤트 로그 파일의 복사본에서 이벤트를 가져옵니다. 로그 이름은 공백을 포함하므로 경로가 따옴표로 묶입니다.
예 12
C:\PS>get-winevent -path 'c:\tracing\tracelog.etl' -maxevents 100 -oldest
C:\PS> get-winevent -path 'c:\tracing\tracelog.etl' -oldest | sort-object -property timecreated -desc | select-object -first 100
설명
-----------
이들 명령은 ETW(Windows용 이벤트 추적) 이벤트 추적 로그 파일에서 처음 100개의 이벤트를 가져옵니다.
첫 번째 명령은 로그에서 가장 오래된 100개의 이벤트를 가져옵니다. 이 명령은 Get-WinEvent cmdlet을 사용하여 Tracelog.etl 파일에서 이벤트를 가져오며 MaxEvents 매개 변수를 사용하여 검색되는 이벤트 수를 100개로 제한합니다. 이벤트는 로그에 기록된 순서대로 나열(오래된 것 먼저 순서)되므로 Oldest 매개 변수가 필요합니다.
두 번째 명령은 로그에서 가장 최신인 100개의 이벤트를 가져옵니다. 이 명령은 Get-WinEvent cmdlet을 사용하여 Tracing.etl 파일에서 모든 이벤트를 가져오며 이벤트를
Sort-Object cmdlet으로 전달합니다. 그러면 이 cmdlet이 TimeCreated 속성 값을 기준으로 이벤트를 내림차순으로 정렬합니다. 그런 다음 이 명령은 정렬된 이벤트를 Select-Object cmdlet으로 전달하여 가장 최신인 100개의 이벤트를 선택합니다.
예 13
C:\PS>get-winevent -path "c:\tracing\tracelog.etl", "c:\Logs\Windows PowerShell.evtx" -oldest | where {$_.id -eq "103"}
설명
-----------
이 예에서는 테스트 디렉터리에 저장된 Windows PowerShell 로그 파일(.evtx) 복사본과 이벤트 추적 로그 파일(.etl)에서 이벤트를 가져오는 방법을 보여 줍니다.
단일 명령으로 여러 파일 유형을 결합할 수 있습니다. 해당 파일에는 동일한 유형의 .NET Framework 개체(EventLogRecord 개체)가 포함되어 있으므로 동일한 속성을 사용하여 필터링 작업을 수행할 수 있습니다.
이 명령은 .etl 파일에서 읽지만 Oldest 매개 변수가 두 파일 모두에 적용되므로 이 명령에는 Oldest 매개 변수가 필요합니다.
예 14
C:\PS># Use the Where-Object cmdlet
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -logname "Windows PowerShell" | where {$_.timecreated -ge $yesterday}
# Uses FilterHashTable
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -FilterHashTable @{LogName='Windows PowerShell'; Level=3; StartTime=$yesterday}
# Use FilterXML
C:\PS> get-winevent -FilterXML "<QueryList><Query><Select Path='Windows PowerShell'>*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select></Query></QueryList>"
# Use FilterXPath
C:\PS> get-winevent -LogName "Windows Powershell" -FilterXPath "*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
설명
-----------
이 예에서는 이벤트 로그에서 이벤트를 선택하기 위한 다양한 필터링 방법을 보여 줍니다. 이들 명령은 Windows PowerShell 이벤트 로그에서 지난 24시간 동안 발생한 이벤트를 가져옵니다.
모든 개체가 검색된 다음 개체가 필터링되는 것이 아니라 개체가 검색되는 동안 필터가 적용되므로 Where-Object cmdlet을 사용하는 것보다 필터링 방법을 사용하는 것이 더 효율적입니다.
날짜는 XML 및 XPath 형식으로 작성하기 어려우므로 날짜에 대한 XML 콘텐츠를 만들기 위해 이벤트 뷰어의 현재 로그 필터링 기능이 사용됩니다. 이 기능에 대한 자세한 내용은 이벤트 뷰어 도움말을 참조하십시오.
예 15
C:\PS>$date = (get-date).AddDays(-2)
C:\PS> $events = get-winevent -FilterHashTable @{ logname = "Microsoft-Windows-Diagnostics-Performance/Operational"; StartTime = $date; ID = 100 }
설명
-----------
이 예에서는 필터 해시 테이블을 사용하여 성능 로그에서 이벤트를 가져옵니다.
첫 번째 명령은 Get-Date cmdlet 및 AddDays 메서드를 사용하여 현재 날짜의 이틀 전 날짜를 가져와 $date 변수에 저장합니다.
두 번째 명령은 FilterHashTable 매개 변수가 있는 Get-WinEvent cmdlet을 사용합니다. 해시 테이블의 키는 성능 로그에서 지난 이틀 동안 발생했으며 이벤트 ID가 100인 이벤트를 선택하는 필터를 정의합니다.
LogName 키는 이벤트 로그를 지정하고 StartTime 키는 날짜를 지정하며 ID 키는 이벤트 ID를 지정합니다.
예 16
C:\PS>$starttime = (get-date).adddays(-7)
C:\PS> $ie-error = Get-WinEvent -FilterHashtable @{logname="application"; providername="Application Error"; data="iexplore.exe"; starttime=$starttime}
설명
-----------
이 예에서는 필터 해시 테이블을 사용하여 지난 주에 발생한 Internet Explorer 응용 프로그램 오류를 찾습니다.
첫 번째 명령은 현재 날짜의 7일 전 날짜를 가져와 $starttime 변수에 저장합니다.
두 번째 명령은 FilterHashTable 매개 변수가 있는 Get-WinEvent cmdlet을 사용합니다. 해시 테이블의 키는 응용 프로그램 로그에서 응용 프로그램 오류 공급자에 의해 기록되었으며 "iexplore.exe"라는 구가 포함된 이벤트를 선택하는 필터를 정의합니다.
LogName 키는 이벤트 로그를 지정합니다. ProviderName 키는 이벤트 공급자를 지정하고 StartTime 키는 이벤트의 시작 날짜를 지정하며 Data 키는 이벤트 메시지의 텍스트를 지정합니다.