Share via


Get-EventLog

로컬 컴퓨터 또는 원격 컴퓨터에서 이벤트 로그의 이벤트 또는 이벤트 로그 목록을 가져옵니다.

Syntax

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

Description

cmdlet은 Get-EventLog 로컬 및 원격 컴퓨터에서 이벤트 및 이벤트 로그를 가져옵니다. 기본적으로 Get-EventLog 로컬 컴퓨터에서 로그를 가져옵니다. 원격 컴퓨터에서 로그를 얻으려면 ComputerName 매개 변수를 사용합니다.

매개 변수 및 속성 값을 사용하여 Get-EventLog 이벤트를 검색할 수 있습니다. cmdlet은 지정된 속성 값과 일치하는 이벤트를 가져옵니다.

명사 포함 EventLog PowerShell cmdlet은 애플리케이션, 시스템 또는 보안과 같은 Windows 클래식 이벤트 로그에서만 작동합니다. Windows Vista 이상 Windows 버전 Get-WinEvent에서 Windows 이벤트 로그 기술을 사용하는 로그를 얻으려면 .

참고 항목

Get-EventLog 는 사용되지 않는 Win32 API를 사용합니다. 결과가 정확하지 않을 수 있습니다. 대신 cmdlet을 Get-WinEvent 사용합니다.

예제

예제 1: 로컬 컴퓨터에서 이벤트 로그 가져오기

다음은 로컬 컴퓨터에서 사용할 수 있는 이벤트 로그 목록을 표시하는 예제입니다. 로그 열의 이름은 LogName 매개 변수와 함께 사용하여 이벤트를 검색할 로그를 지정합니다.

Get-EventLog -List

Max(K)   Retain   OverflowAction      Entries  Log
------   ------   --------------      -------  ---
15,168        0   OverwriteAsNeeded   20,792   Application
15,168        0   OverwriteAsNeeded   12,559   System
15,360        0   OverwriteAsNeeded   11,173   Windows PowerShell

cmdlet은 Get-EventLog List 매개 변수를 사용하여 사용 가능한 로그를 표시합니다.

예제 2: 로컬 컴퓨터의 이벤트 로그에서 최근 항목 가져오기

이 예제에서는 시스템 이벤트 로그에서 최근 항목을 가져옵니다.

Get-EventLog -LogName System -Newest 5

Index   Time          EntryType    Source              InstanceID   Message
-----   ----          ---------    ------              ----------   -------
13820   Jan 17 19:16  Error        DCOM                     10016   The description for Event...
13819   Jan 17 19:08  Error        DCOM                     10016   The description for Event...
13818   Jan 17 19:06  Information  Service Control...  1073748864   The start type of the Back...
13817   Jan 17 19:05  Error        DCOM                     10016   The description for Event...
13815   Jan 17 19:03  Information  Microsoft-Windows...        35   The time service is now sync...

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 이벤트 로그를 지정합니다. Newest 매개 변수는 5개의 가장 최근 이벤트를 반환합니다.

예제 3: 이벤트 로그에서 특정 수의 항목에 대한 모든 원본 찾기

이 예제에서는 시스템 이벤트 로그의 가장 최근 항목 1000개에 포함된 모든 원본을 찾는 방법을 보여 줍니다.

$Events = Get-EventLog -LogName System -Newest 1000
$Events | Group-Object -Property Source -NoElement | Sort-Object -Property Count -Descending

Count   Name
-----   ----
  110   DCOM
   65   Service Control Manager
   51   Microsoft-Windows-Kern...
   14   EventLog
   14   BTHUSB
   13   Win32k

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 로그를 지정합니다. 최신 매개 변수는 1000개의 가장 최근 이벤트를 선택합니다. 이벤트 개체는 변수에 $Events 저장됩니다. 개체는 $Events 파이프라인 아래로 cmdlet으로 Group-Object 전송됩니다. Group-Object는 Property 매개 변수를 사용하여 개체를 원본별로 그룹화하고 각 원본의 개체 수를 계산합니다. NoElement 매개 변수는 출력에서 그룹 멤버를 제거합니다. cmdlet은 Sort-Object Property 매개 변수를 사용하여 각 원본 이름의 개수를 기준으로 정렬합니다. 내림차순 매개 변수는 목록을 가장 높은 개수에서 가장 낮은 수로 순서대로 정렬합니다.

예제 4: 특정 이벤트 로그에서 오류 이벤트 가져오기

이 예제에서는 시스템 이벤트 로그에서 오류 이벤트를 가져옵니다.

Get-EventLog -LogName System -EntryType Error

Index Time          EntryType   Source  InstanceID Message
----- ----          ---------   ------  ---------- -------
13296 Jan 16 13:53  Error       DCOM    10016 The description for Event ID '10016' in Source...
13291 Jan 16 13:51  Error       DCOM    10016 The description for Event ID '10016' in Source...
13245 Jan 16 11:45  Error       DCOM    10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07  Error       DCOM    10016 The description for Event ID '10016' in Source...

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 로그를 지정합니다. EntryType 매개 변수는 이벤트를 필터링하여 오류 이벤트만 표시합니다.

예제 5: InstanceId 및 원본 값을 사용하여 이벤트 로그에서 이벤트 가져오기

이 예제에서는 특정 InstanceId 및 원본에 대한 시스템 로그에서 이벤트를 가져옵니다.

Get-EventLog -LogName System -InstanceId 10016 -Source DCOM

Index Time          EntryType  Source  InstanceID  Message
----- ----          ---------  ------  ----------  -------
13245 Jan 16 11:45  Error      DCOM         10016  The description for Event ID '10016' in Source...
13230 Jan 16 11:07  Error      DCOM         10016  The description for Event ID '10016' in Source...
13219 Jan 16 10:00  Error      DCOM         10016  The description for Event ID '10016' in Source...

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 로그를 지정합니다. InstanceID 매개 변수는 지정된 인스턴스 ID를 가진 이벤트를 선택합니다. Source 매개 변수는 이벤트 속성을 지정합니다.

예제 6: 여러 컴퓨터에서 이벤트 가져오기

이 명령은 Server01, Server02 및 Server03의 세 컴퓨터에서 시스템 이벤트 로그에서 이벤트를 가져옵니다.

Get-EventLog -LogName System -ComputerName Server01, Server02, Server03

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 로그를 지정합니다. ComputerName 매개 변수는 쉼표로 구분된 문자열을 사용하여 이벤트 로그를 가져올 컴퓨터를 나열합니다.

예제 7: 메시지에 특정 단어를 포함하는 모든 이벤트 가져오기

이 명령은 이벤트 메시지의 특정 단어를 포함하는 시스템 이벤트 로그의 모든 이벤트를 가져옵니다. 지정된 메시지 매개 변수의 값이 메시지의 콘텐츠에 포함되지만 PowerShell 콘솔에 표시되지 않을 수 있습니다.

Get-EventLog -LogName System -Message *description*

Index Time          EntryType   Source       InstanceID   Message
----- ----          ---------   ------       ----------   -------
13821 Jan 17 19:17  Error       DCOM              10016   The description for Event ID '10016'...
13820 Jan 17 19:16  Error       DCOM              10016   The description for Event ID '10016'...
13819 Jan 17 19:08  Error       DCOM              10016   The description for Event ID '10016'...

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 이벤트 로그를 지정합니다. Message 매개 변수는 각 이벤트의 메시지 필드에서 검색할 단어를 지정합니다.

예제 8: 이벤트의 속성 값 표시

이 예제에서는 이벤트의 모든 속성 및 값을 표시하는 방법을 보여 있습니다.

$A = Get-EventLog -LogName System -Newest 1
$A | Select-Object -Property *

EventID            : 10016
MachineName        : localhost
Data               : {}
Index              : 13821
Category           : (0)
CategoryNumber     : 0
EntryType          : Error
Message            : The description for Event ID '10016' in Source 'DCOM'...
Source             : DCOM
ReplacementStrings : {Local,...}
InstanceId         : 10016
TimeGenerated      : 1/17/2019 19:17:23
TimeWritten        : 1/17/2019 19:17:23
UserName           : username
Site               :
Container          :

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 이벤트 로그를 지정합니다. Newest 매개 변수는 가장 최근의 이벤트 개체를 선택합니다. 개체는 변수에 $A 저장됩니다. 변수의 $A 개체가 파이프라인 아래로 cmdlet으로 Select-Object 전송됩니다. Select-Object별표(*)와 함께 Property 매개 변수를 사용하여 개체의 모든 속성을 선택합니다.

예제 9: 원본 및 이벤트 ID를 사용하여 이벤트 로그에서 이벤트 가져오기

이 예제에서는 지정된 원본 및 이벤트 ID에 대한 이벤트를 가져옵니다.

Get-EventLog -LogName Application -Source Outlook | Where-Object {$_.EventID -eq 63} |
              Select-Object -Property Source, EventID, InstanceId, Message

Source   EventID   InstanceId   Message
------   -------   ----------   -------
Outlook       63   1073741887   The Exchange web service request succeeded.
Outlook       63   1073741887   Outlook detected a change notification.
Outlook       63   1073741887   The Exchange web service request succeeded.

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 애플리케이션 이벤트 로그를 지정합니다. 원본 매개 변수는 응용 프로그램 이름인 Outlook을 지정합니다. 개체는 파이프라인 아래로 cmdlet으로 Where-Object 전송됩니다. 파이프라인 Where-Object 의 각 개체에 대해 cmdlet은 변수 $_.EventID 를 사용하여 이벤트 ID 속성을 지정된 값과 비교합니다. 개체는 파이프라인 아래로 cmdlet으로 Select-Object 전송됩니다. Select-Object 에서는 Property 매개 변수를 사용하여 PowerShell 콘솔에 표시할 속성을 선택합니다.

예제 10: 속성별로 이벤트 및 그룹 가져오기

Get-EventLog -LogName System -UserName NT* | Group-Object -Property UserName -NoElement |
              Select-Object -Property Count, Name

Count  Name
-----  ----
6031   NT AUTHORITY\SYSTEM
  42   NT AUTHORITY\LOCAL SERVICE
   4   NT AUTHORITY\NETWORK SERVICE

cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 로그를 지정합니다. UserName 매개 변수에는 사용자 이름의 일부를 지정하는 별표(*) wild카드가 포함됩니다. 이벤트 개체는 파이프라인을 cmdlet으로 Group-Object 보냅니다. Group-Object는 Property 매개 변수를 사용하여 UserName 속성을 사용하여 개체를 그룹화하고 각 사용자 이름에 대한 개체 수를 계산하도록 지정합니다. NoElement 매개 변수는 출력에서 그룹 멤버를 제거합니다. 개체는 파이프라인 아래로 cmdlet으로 Select-Object 전송됩니다. Select-Object 에서는 Property 매개 변수를 사용하여 PowerShell 콘솔에 표시할 속성을 선택합니다.

예제 11: 특정 날짜 및 시간 범위 동안 발생한 이벤트 가져오기

이 예제에서는 지정된 날짜 및 시간 범위에 대한 시스템 이벤트 로그에서 오류 이벤트를 가져옵니다. 이전이후 매개 변수는 날짜 및 시간 범위를 설정하지만 출력에서 제외됩니다.

$Begin = Get-Date -Date '1/17/2019 08:00:00'
$End = Get-Date -Date '1/17/2019 17:00:00'
Get-EventLog -LogName System -EntryType Error -After $Begin -Before $End

Index Time          EntryType   Source   InstanceID  Message
----- ----          ---------   ------   ----------  -------
13821 Jan 17 13:40  Error       DCOM          10016  The description for Event ID...
13820 Jan 17 13:11  Error       DCOM          10016  The description for Event ID...
...
12372 Jan 17 10:08  Error       DCOM          10016  The description for Event ID...
12371 Jan 17 09:04  Error       DCOM          10016  The description for Event ID...

cmdlet은 Get-Date Date 매개 변수를 사용하여 날짜와 시간을 지정합니다. DateTime 개체는 변수 및 $End 변수에 $Begin 저장됩니다. cmdlet은 Get-EventLog LogName 매개 변수를 사용하여 시스템 로그를 지정합니다. EntryType 매개 변수는 오류 이벤트 유형을 지정합니다. 날짜 및 시간 범위는 After 매개 변수 및 변수와 $Begin Before 매개 변수 및 $End 변수에 의해 설정됩니다.

매개 변수

-After

지정된 날짜 및 시간 이후에 발생한 이벤트를 가져옵니다. After 매개 변수 날짜 및 시간은 출력에서 제외됩니다. cmdlet에서 반환하는 값과 같은 DateTime 개체를 Get-Date 입력합니다.

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

-AsBaseObject

이 cmdlet은 각 이벤트에 대한 표준 System.Diagnostics.EventLogEntry 개체를 반환한다는 것을 나타냅니다. 이 매개 변수가 없으면 추가 EventLogName, Get-EventLogSourceInstanceId 속성을 사용하여 확장된 PSObject 개체를 반환합니다.

이 매개 변수의 효과를 보려면 이벤트를 cmdlet으로 Get-Member 파이프하고 결과에서 TypeName 값을 검사합니다.

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

-AsString

이 cmdlet은 출력을 개체 대신 문자열로 반환한다는 것을 나타냅니다.

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

-Before

지정된 날짜 및 시간 이전에 발생한 이벤트를 가져옵니다. Before 매개 변수 날짜 및 시간은 출력에서 제외됩니다. cmdlet에서 반환하는 값과 같은 DateTime 개체를 Get-Date 입력합니다.

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

-ComputerName

이 매개 변수는 원격 컴퓨터의 NetBIOS 이름, IP(인터넷 프로토콜) 주소 또는 FQDN(정규화된 do기본 이름)을 지정합니다.

ComputerName 매개 변수를 지정 Get-EventLog 하지 않으면 기본적으로 로컬 컴퓨터가 사용됩니다. 또한 매개 변수는 점(.)을 허용하여 로컬 컴퓨터를 지정합니다.

ComputerName 매개 변수는 Windows PowerShell 원격을 사용하지 않습니다. 컴퓨터가 원격 명령을 실행하도록 구성되지 않은 경우에도 ComputerName 매개 변수와 함께 사용할 Get-EventLog 수 있습니다.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EntryType

문자열 배열로 이 cmdlet이 가져오는 이벤트의 항목 형식을 지정합니다.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • Error
  • 정보
  • FailureAudit
  • SuccessAudit
  • Warning
Type:String[]
Aliases:ET
Accepted values:Error, Information, FailureAudit, SuccessAudit, Warning
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Index

이벤트 로그에서 가져올 인덱스 값을 지정합니다. 매개 변수는 쉼표로 구분된 값 문자열을 허용합니다.

Type:Int32[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InstanceId

이벤트 로그에서 가져올 인스턴스 ID를 지정합니다. 매개 변수는 쉼표로 구분된 값 문자열을 허용합니다.

Type:Int64[]
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-List

컴퓨터의 이벤트 로그 목록을 표시합니다.

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

-LogName

하나의 이벤트 로그의 이름을 지정합니다. 로그 이름을 찾으려면 .를 사용합니다 Get-EventLog -List. 와일드카드 문자를 사용할 수 있습니다. 이 매개 변수는 필수입니다.

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

-Message

이벤트 메시지의 문자열을 지정합니다. 이 매개 변수를 사용하여 특정 단어 또는 구가 포함된 메시지를 검색할 수 있습니다. 야생카드 허용됩니다.

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

-Newest

최신 이벤트로 시작하고 지정된 수의 이벤트를 가져옵니다. 예를 들어 -Newest 100이벤트 수가 필요합니다. 반환되는 최대 이벤트 수를 지정합니다.

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

-Source

이 cmdlet이 가져오는 로그에 기록된 원본을 문자열 배열로 지정합니다. 야생카드 허용됩니다.

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

-UserName

이벤트와 연결된 사용자 이름을 문자열 배열로 지정합니다. 이름 또는 이름 패턴(예: User01, User*또는 Domain01\User*.)을 입력합니다. 야생카드 허용됩니다.

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

입력

None

입력을 .에 파이프할 Get-EventLog수 없습니다.

출력

System.Diagnostics.EventLogEntry. System.Diagnostics.EventLog. System.String

LogName 매개 변수를 지정하면 출력은 System.Diagnostics.EventLogEntry 개체의 컬렉션입니다.

List 매개 변수만 지정하면 출력은 System.Diagnostics.EventLog 개체의 컬렉션입니다.

ListAsString 매개 변수를 모두 지정하면 출력은 System.String 개체의 컬렉션입니다.

참고

이 cmdlet은 Get-EventLogGet-WinEvent Windows PE(Windows 사전 설치 환경)에서 지원되지 않습니다.