모든 Windows 시스템 관리자는 아마도 Windows 이벤트 로그에 익숙할 것입니다. PowerShell에서 이 cmdlet을 사용하면 여러 컴퓨터에서 한꺼번에 많은 이벤트를 파싱할 수 있습니다. 이로 인해 이벤트 뷰어에서 적절한 필터를 찾거나 중요한 이벤트가 정확히 어디에 저장되어 있는지 찾으려고 마우스로 클릭하는 번거로움을 덜 수 있습니다. 그러나 Get-EventLog
에는 문제점이 있습니다. 이를 확인하게 될 것입니다.
Get-EventLog
를 사용하여 이벤트 로그 목록 나열
Get-EventLog
cmdlet은 모든 최신 버전의 Windows PowerShell에서 사용할 수 있습니다. 가장 간단한 사용법은 이 cmdlet이 쿼리할 이벤트 로그를 필요로 하며 해당 이벤트 로그의 모든 이벤트를 표시합니다.
그러나 처음에 이벤트 로그 이름을 모르는 경우 어떻게 해야 할까요? 이 경우에는 로컬 컴퓨터에서 사용 가능한 모든 이벤트 로그를 찾아야 합니다. 이를 위해 Get-EventLog -List
명령을 사용합니다.

저는 로컬 시스템에 몇 개의 이벤트 로그가 있는 것을 볼 수 있지만, 다른 이벤트 로그는 어디에 있을까요? 이벤트 뷰어의 “응용 프로그램 및 서비스 로그”에는 수십 개의 다른 이벤트 로그가 표시됩니다. 왜 여기에 나타나지 않을까요?
그러한 이벤트가 필요한 경우, 불행히도 Get-EventLog
는 작동하지 않습니다. 대신 Get-WinEvent를 확인해야 합니다. 현재 Get-EventLog
cmdlet은 레거시 cmdlet으로 간주될 수 있지만, 사용하기가 너무 쉬워서 여전히 자주 사용합니다.
Get-EventLog를 사용하여 이벤트 쿼리하기
지금 우리는 사용 가능한 모든 이벤트 로그를 알게 되었으므로, 해당 이벤트 로그 내에서 이벤트를 읽을 수 있습니다. 어쩌면 나는 응용 프로그램 이벤트 로그의 모든 이벤트를 보고 싶을 수도 있습니다. 이벤트를 가져오기 위해 Get-EventLog
와 함께 LogName
매개변수를 지정해주어야 하며, 이렇게하면 해당 이벤트 로그의 모든 이벤트가 반환됩니다.

기본적으로 출력에서는 다음과 같이 여섯 가지 속성만 볼 수 있습니다:
Index
Time
EntryType
Source
InstanceId
Message
실제로 Get-EventLog
는 그 중 16가지를 반환합니다. 여섯 가지만 보이는 이유는 PowerShell의 형식 지정 규칙 때문입니다. 아래는 Get-EventLog
를 Select-Object
에 파이핑하여 모든 속성을 선택한 실제 출력 예시입니다.

Get-EventLog로 필터링
이벤트를 찾을 때 대부분의 경우, 모든 이벤트가 필요하지 않을 것입니다. 대신, 필요한 몇 가지 이벤트만 필터링해야 합니다. 이를 위해 Get-EventLog
에는 몇 가지 다른 방법이 있습니다. Get-EventLog
cmdlet은 타임스탬프, 엔트리 유형, 이벤트 ID, 메시지, 소스, 사용자 이름을 기반으로 필터링할 수 있습니다. 이렇게 하면 대부분의 이벤트를 찾는 방법이 해결됩니다.
필터링을 보여주기 위해, 아마도 일정한 간격으로 이벤트를 쿼리하고 가장 최근의 열 개 이벤트를 찾고 싶을 것입니다. 이 경우에는 Newest
매개변수를 사용하여 표시할 이벤트 수를 지정할 수 있습니다. Get-EventLog -LogName Application -Newest 10
은 최근 열 개의 이벤트만 반환합니다.
어떤 특정 시점 이후의 모든 이벤트를 찾고 싶을 수도 있습니다. 이를 위해 After
매개변수를 사용할 수 있습니다. After
매개변수는 날짜/시간을 입력받으므로, 예를 들어 1/26/19 10:17 AM 이후에 발생한 Application 로그의 이벤트만 찾으려면 다음과 같이 할 수 있습니다. Get-EventLog -LogName Application -After '1/26/19 10:17'
. 마찬가지로, 특정 날짜 이전에 발생한 이벤트를 선택하려면 Before
매개변수를 사용할 수 있습니다.
Get-EventLog
에는 타임스탬프를 기반으로 한 필터링 외에도 다양한 필터링 방법이 있습니다. 우리는 이벤트 ID(인스턴스 ID)와 메시지와 같은 다른 속성을 기반으로 이벤트를 필터링할 수도 있습니다. 아마도 ID가 916인 이벤트를 찾고 싶다면 InstanceId
매개변수에 916을 전달합니다.
필터를 결합할 수도 있습니다. 아마도 ID가 916인 이벤트가 많이 반환되지만 메시지에 svchost 문자열이 포함된 이벤트를 원한다면, Get-EventLog
에 Message
매개변수를 추가하고 svchost와 같은 와일드카드를 지정할 수 있습니다.
보너스 스크립트!
당신은 실제 스크립트에서 Get-EventLog를 사용하는 훌륭한 예제가 필요한가요? 그렇다면 다행이에요! 아래는 오늘 다운로드하고 사용할 수 있는 Get-EventLog
의 고급 사용 사례입니다!
요약
커머드 Get-EventLog
는 일반적인 이벤트 로그 중 하나를 빠르게 쿼리해야 할 때 사용하기 좋은 명령입니다. 사용하기 쉽고 기본적인 필터링 기능을 제공합니다. 그러나 더 깊은 이벤트 로그 조사가 필요한 경우, Get-WinEvent
명령이 더 잘 작동할 것입니다. 그러나 사용하기가 조금 더 어렵고 XPath와 같은 구문을 알아야 할 때도 있습니다.