Udostępnij za pośrednictwem


Get-EventLog

Pobiera zdarzenia w dzienniku zdarzeń lub listę dzienników zdarzeń na komputerze lokalnym lub komputerach zdalnych.

Składnia

Get-EventLog
   [-LogName] <string>
   [[-InstanceId] <long[]>]
   [-ComputerName <string[]>]
   [-Newest <int>]
   [-After <datetime>]
   [-Before <datetime>]
   [-UserName <string[]>]
   [-Index <int[]>]
   [-EntryType <String[]>]
   [-Source <String[]>]
   [-Message <String>]
   [-AsBaseObject]
   [<CommonParameters>]
Get-EventLog
   [-ComputerName <String[]>]
   [-List]
   [-AsString]
   [<CommonParameters>]

Opis

Polecenie cmdlet Get-EventLog pobiera zdarzenia i dzienniki zdarzeń z komputerów lokalnych i zdalnych. Domyślnie Get-EventLog pobiera dzienniki z komputera lokalnego. Aby pobrać dzienniki z komputerów zdalnych, użyj parametru ComputerName.

Do wyszukiwania zdarzeń można użyć parametrów Get-EventLog i wartości właściwości. Polecenie cmdlet pobiera zdarzenia zgodne z określonymi wartościami właściwości.

Polecenia cmdlet programu PowerShell zawierające EventLog un działają tylko w klasycznych dziennikach zdarzeń systemu Windows, takich jak Aplikacja, System lub Zabezpieczenia. Aby uzyskać dzienniki korzystające z technologii dziennika zdarzeń systemu Windows w systemie Windows Vista i nowszych wersjach systemu Windows, użyj Get-WinEvent.

Przykłady

Przykład 1. Pobieranie dzienników zdarzeń na komputerze lokalnym

W tym przykładzie zostanie wyświetlona lista dzienników zdarzeń, które są dostępne na komputerze lokalnym. Nazwy w kolumnie Dziennik są używane z parametrem LogName w celu określenia, który dziennik jest wyszukiwany pod kątem zdarzeń.

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

Polecenie cmdlet używa parametru list do wyświetlania dostępnych dzienników.

Przykład 2. Pobieranie ostatnich wpisów z dziennika zdarzeń na komputerze lokalnym

Ten przykład pobiera ostatnie wpisy z dziennika zdarzeń systemu.

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...

Polecenie cmdlet używa parametru LogName w celu określenia dziennika zdarzeń systemu. Parametr Najnowszy zwraca pięć najnowszych zdarzeń.

Przykład 3. Znajdowanie wszystkich źródeł dla określonej liczby wpisów w dzienniku zdarzeń

W tym przykładzie pokazano, jak znaleźć wszystkie źródła uwzględnione w 1000 najnowszych wpisach w dzienniku zdarzeń systemu.

$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

Polecenie cmdlet Get-EventLog używa parametru LogName w celu określenia dziennika systemowego. Parametr Najnowszy wybiera 1000 najnowszych zdarzeń. Obiekty zdarzeń są przechowywane w zmiennej $Events. Obiekty $Events są wysyłane w dół potoku do polecenia cmdlet Group-Object. używa parametru właściwości do grupowania obiektów według źródła i zlicza liczbę obiektów dla każdego źródła. Parametr NoElement usuwa członków grupy z danych wyjściowych. Polecenie cmdlet używa parametru właściwości do sortowania według liczby każdej nazwy źródłowej. Parametr Descending sortuje listę według liczby od najwyższej do najniższej.

Przykład 4. Pobieranie zdarzeń błędu z określonego dziennika zdarzeń

W tym przykładzie są wyświetlane zdarzenia błędów z dziennika zdarzeń systemu.

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...

Polecenie cmdlet Get-EventLog używa parametru LogName w celu określenia dziennika systemowego. Parametr EntryType filtruje zdarzenia w celu wyświetlenia tylko zdarzeń błędu.

Przykład 5. Pobieranie zdarzeń z dziennika zdarzeń z wartością InstanceId i Source

Ten przykład pobiera zdarzenia z dziennika systemowego dla określonego identyfikatora wystąpienia i źródła.

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...

Polecenie cmdlet Get-EventLog używa parametru LogName w celu określenia dziennika systemowego. Parametr InstanceID wybiera zdarzenia o określonym identyfikatorze wystąpienia. Parametr Source określa właściwość zdarzenia.

Przykład 6. Pobieranie zdarzeń z wielu komputerów

To polecenie pobiera zdarzenia z dziennika zdarzeń systemu na trzech komputerach: Server01, Server02 i Server03.

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

Polecenie cmdlet Get-EventLog używa parametru LogName w celu określenia dziennika systemowego. Parametr ComputerName używa ciągu rozdzielanego przecinkami, aby wyświetlić listę komputerów, z których chcesz uzyskać dzienniki zdarzeń.

Przykład 7. Pobieranie wszystkich zdarzeń, które zawierają określone słowo w komunikacie

To polecenie pobiera wszystkie zdarzenia w dzienniku zdarzeń systemu, które zawierają określone słowo w komunikacie zdarzenia. Możliwe, że określona wartość parametru Message jest uwzględniona w zawartości komunikatu, ale nie jest wyświetlana w konsoli programu 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'...

Polecenie cmdlet używa parametru LogName w celu określenia dziennika zdarzeń systemu. Parametr Message określa słowo do wyszukania w polu komunikatu każdego zdarzenia.

Przykład 8. Wyświetlanie wartości właściwości zdarzenia

W tym przykładzie pokazano, jak wyświetlić wszystkie właściwości i wartości zdarzenia.

$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          :

Polecenie cmdlet używa parametru LogName w celu określenia dziennika zdarzeń systemu. Parametr Najnowszy wybiera najnowszy obiekt zdarzenia. Obiekt jest przechowywany w zmiennej $A. Obiekt w zmiennej $A jest wysyłany w dół potoku do polecenia cmdlet Select-Object. używa parametru property z gwiazdką (), aby wybrać wszystkie właściwości obiektu.

Przykład 9. Pobieranie zdarzeń z dziennika zdarzeń przy użyciu źródła i identyfikatora zdarzenia

Ten przykład pobiera zdarzenia dla określonego źródła i identyfikatora zdarzenia.

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.

Polecenie cmdlet używa parametru LogName w celu określenia dziennika zdarzeń aplikacji. Parametr Source określa nazwę aplikacji Outlook. Obiekty są wysyłane w dół potoku do polecenia cmdlet Where-Object. Dla każdego obiektu w potoku polecenie cmdlet Where-Object używa zmiennej $_.EventID do porównania właściwości Identyfikator zdarzenia z określoną wartością. Obiekty są wysyłane w dół potoku do polecenia cmdlet Select-Object. używa parametru właściwości , aby wybrać właściwości do wyświetlenia w konsoli programu PowerShell.

Przykład 10: Pobieranie zdarzeń i grupowanie według właściwości

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

Polecenie cmdlet Get-EventLog używa parametru LogName w celu określenia dziennika systemowego. Parametr UserName zawiera symbol wieloznaczny gwiazdki (*), aby określić część nazwy użytkownika. Obiekty zdarzeń są wysyłane w dół potoku do polecenia cmdlet Group-Object. używa parametru property , aby określić, że właściwość UserName służy do grupowania obiektów i zliczaj liczbę obiektów dla każdej nazwy użytkownika. Parametr NoElement usuwa członków grupy z danych wyjściowych. Obiekty są wysyłane w dół potoku do polecenia cmdlet Select-Object. używa parametru właściwości , aby wybrać właściwości do wyświetlenia w konsoli programu PowerShell.

Przykład 11. Pobieranie zdarzeń, które wystąpiły w określonym zakresie dat i godzin

Ten przykład pobiera zdarzenia błędów z dziennika zdarzeń systemu dla określonego zakresu dat i godzin. Parametry Przed i Po ustawiają zakres daty i godziny, ale są wykluczone z danych wyjściowych.

$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...

Polecenie cmdlet używa parametru data , aby określić datę i godzinę. Obiekty DateTime są przechowywane w zmiennych $Begin i $End. Polecenie cmdlet Get-EventLog używa parametru LogName w celu określenia dziennika systemowego. Parametr EntryType określa typ zdarzenia Błąd. Zakres daty i godziny jest ustawiany przez parametr After i zmienną $Begin oraz zmienną Przed i zmienną $End.

Parametry

-After

Pobiera zdarzenia, które wystąpiły po określonej dacie i godzinie. Data i godzina parametru po są wykluczone z danych wyjściowych. Wprowadź obiekt DateTime, taki jak wartość zwrócona przez polecenie cmdlet Get-Date.

Typ:DateTime
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-AsBaseObject

Wskazuje, że to polecenie cmdlet zwraca standardowy obiekt System.Diagnostics.EventLogEntry dla każdego zdarzenia. Bez tego parametru zwraca obiekt PSObject z dodatkowymi właściwościami EventLogName, sourcei InstanceId.

Aby zobaczyć efekt tego parametru, należy przekazać zdarzenia do polecenia cmdlet Get-Member i zbadać wartość TypeName w wyniku.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-AsString

Wskazuje, że to polecenie cmdlet zwraca dane wyjściowe jako ciągi, a nie obiekty.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Before

Pobiera zdarzenia, które wystąpiły przed określoną datą i godziną. Data i godzina parametru przed są wykluczone z danych wyjściowych. Wprowadź obiekt DateTime, taki jak wartość zwrócona przez polecenie cmdlet Get-Date.

Typ:DateTime
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-ComputerName

Ten parametr określa nazwę NetBIOS komputera zdalnego, adres IP (Internet Protocol) lub w pełni kwalifikowaną nazwę domeny (FQDN).

Jeśli nie określono parametru ComputerName, Get-EventLog wartość domyślna komputera lokalnego. Parametr akceptuje również kropkę (.) w celu określenia komputera lokalnego.

Parametr ComputerName nie polega na komunikacji zdalnej programu Windows PowerShell. Można użyć Get-EventLog z parametrem ComputerName, nawet jeśli komputer nie jest skonfigurowany do uruchamiania poleceń zdalnych.

Typ:String[]
Aliasy:Cn
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-EntryType

Określa jako tablicę ciągów typ wpisu zdarzeń pobieranych przez to polecenie cmdlet.

Dopuszczalne wartości tego parametru to:

  • Błąd
  • Informacja
  • FailureAudit
  • SuccessAudit
  • Ostrzeżenie
Typ:String[]
Aliasy:ET
Dopuszczalne wartości:Error, Information, FailureAudit, SuccessAudit, Warning
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Index

Określa wartości indeksu, które mają być uzyskiwane z dziennika zdarzeń. Parametr akceptuje rozdzielony przecinkami ciąg wartości.

Typ:int[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-InstanceId

Określa identyfikatory wystąpień, które mają być uzyskiwane z dziennika zdarzeń. Parametr akceptuje rozdzielony przecinkami ciąg wartości.

Typ:long[]
Position:1
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-List

Wyświetla listę dzienników zdarzeń na komputerze.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-LogName

Określa nazwę jednego dziennika zdarzeń. Aby znaleźć nazwy dzienników, użyj Get-EventLog -List. Dozwolone są symbole wieloznaczne. Ten parametr jest wymagany.

Typ:String
Aliasy:LN
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Message

Określa ciąg w komunikacie zdarzenia. Tego parametru można użyć do wyszukiwania komunikatów zawierających określone wyrazy lub frazy. Dozwolone są symbole wieloznaczne.

Typ:String
Aliasy:MSG
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Newest

Rozpoczyna się od najnowszych zdarzeń i pobiera określoną liczbę zdarzeń. Wymagana jest liczba zdarzeń, na przykład -Newest 100. Określa maksymalną liczbę zwracanych zdarzeń.

Typ:Int
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Source

Określa jako tablicę ciągów źródła, które zostały zapisane w dzienniku pobieranym przez to polecenie cmdlet. Dozwolone są symbole wieloznaczne.

Typ:String[]
Aliasy:ABO
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-UserName

Określa jako tablicę ciągów nazwy użytkowników skojarzone ze zdarzeniami. Wprowadź nazwy lub wzorce nazw, takie jak User01, User*lub Domain01\User*. Dozwolone są symbole wieloznaczne.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

Dane wejściowe

None

Nie można przekazać danych wejściowych potoku do Get-EventLog.

Dane wyjściowe

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

Jeśli określono parametr LogName, dane wyjściowe są kolekcją obiektów System.Diagnostics.EventLogEntry.

Jeśli określono tylko parametr listy , dane wyjściowe są kolekcją obiektów System.Diagnostics.EventLog.

Jeśli określono parametry list i AsString, dane wyjściowe są kolekcją obiektów System.String.

Uwagi

Polecenia cmdlet Get-EventLog i Get-WinEvent nie są obsługiwane w środowisku preinstalacji systemu Windows (Windows PE).