2007~2011/PowerShell2011.03.29 10:32
Server Core 환경에서 PowerShell 을 사용하여 이벤트 로그를 확인하는 방법에 대해서 몇 가지 팁을 정리해 봅니다. 로컬 또는 원격 컴퓨터의 이벤트 로그를 얻기 위해서는 Get-EventLog cmdlet 를 사용할 수 있습니다. 또는 Wevtutil 을 사용할 수도 있습니다만 이 포스팅에서는 Get-EventLog cmdlet 에 대해서만 정리했습니다. 


Get-EvnetLog 명령 구문은 아래와 같습니다.
Get-EventLog [-AsString] [-ComputerName <string[]>] [-List] [<CommonParameters>]

Get-EventLog [-LogName] <string> [[-InstanceId] <Int64[]>] [-After <DateTime>] [-AsBaseObject] [-Before <DateTime>] [-ComputerName <string[]>] [-EntryType <string[]>] [-Index <Int32[]>] [-Message <string>] [-Newest <int>] [-Source <string[]>] [-UserName <string[]>] [<CommonParameters>]

이벤트 로그 목록을 살펴 봅니다. 

PS> Get-EventLog -list





최근 3개의 시스템 로그 확인하고 Message 내용을 좀 더 자세히 보기 위해 Format-List cmdlet 을 사용합니다.

PS> Get-EventLog System -newest 3
PS> Get-EventLog System -newst 1 | Format-list





시스템 이벤트 로그 중 Source 값이 EventLog 인 것에 대한 필터링 

PS> Get-EventLog System | Where-Object {$_.Source -eq "EventLog"}





이벤트 로그 Source(EventLog) 와 EventID(6005) 에 대한 OR 필터링 

PS> Get-EventLog System -Source EventLog | Where-Object {$_.EventID -eq "6005"}





Index 번호를 사용하여 해당 이벤트 상세 확인 

PS> $a = Get-EventLog System -Index 406
PS> $a | Format-List -property * 





이벤트 로그 메시지에 포함된 문자열을 검색하여 해당 정보를 text 파일로 기록합니다.

PS> Get-EventLog System -message "*uptime*"
PS> Get-EventLog System -index 467 | Format-List > uptime.txt




이벤트 로그 발생 빈도 카운트 

PS> $events = Get-EventLog System
PS> $events | Group-Object -property source -noelement | Sort-Object -property count -descending 





이외에도 -After, -Before 를 사용한 기간별 검색, -EntryType 을 사용한 Level 정보를 조합하며 검색해 보면 필요한 정보를 충분히 얻을 수 있을 것 같습니다.


[참고자료]
Get-EventLog
http://technet.microsoft.com/en-us/library/dd315250.aspx

Wevtutil

작성자 : Lai Go / 작성일자 : 2011.03.29 
Posted by Lai Go