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>
   [-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>]

Opis

Polecenie Get-EventLog cmdlet 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ć Get-EventLog parametrów 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, które zawierają EventLog nicownik, 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 polecenia Get-WinEvent.

Uwaga

Get-EventLog używa interfejsu API Win32, który jest przestarzały. Wyniki mogą nie być dokładne. Get-WinEvent Zamiast tego użyj polecenia cmdlet .

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 Get-EventLog 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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika zdarzeń systemu. Najnowszy parametr 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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika systemowego. Najnowszy parametr wybiera 1000 najnowszych zdarzeń. Obiekty zdarzeń są przechowywane w zmiennej $Events . Obiekty $Events są wysyłane w dół potoku Group-Object do polecenia cmdlet. Group-Object używa parametru Property 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 Sort-Object cmdlet używa parametru Property do sortowania według liczby każdej nazwy źródłowej. Parametr Malejąco sortuje listę według kolejności 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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika systemowego. Parametr EntryType filtruje zdarzenia, aby wyświetlić tylko zdarzenia Błędy.

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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika systemowego. Parametr InstanceID wybiera zdarzenia o określonym identyfikatorze wystąpienia. Parametr Źródłowy 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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika systemowego. Parametr ComputerName używa ciągu rozdzielanego przecinkami, aby wyświetlić listę komputerów, z których chcesz pobrać 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 komunikatu 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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika zdarzeń systemu. Parametr Komunikat 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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika zdarzeń systemu. Najnowszy parametr wybiera najnowszy obiekt zdarzenia. Obiekt jest przechowywany w zmiennej $A . Obiekt w zmiennej $A jest wysyłany w dół potoku Select-Object 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 Get-EventLog cmdlet używa parametru LogName do określenia dziennika zdarzeń aplikacji. Parametr Źródłowy określa nazwę aplikacji Outlook. Obiekty są wysyłane w dół potoku Where-Object do polecenia cmdlet. Dla każdego obiektu w potoku Where-Object polecenie cmdlet 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 Select-Object do polecenia cmdlet. Select-Object używa parametru Właściwość , 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 Get-EventLog cmdlet używa parametru LogName do 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 Group-Object do polecenia cmdlet. Group-Object używa parametru Property , aby określić, że właściwość UserName jest używana do grupowania obiektów i zliczenia liczby 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 Select-Object do polecenia cmdlet. Select-Object używa parametru Właściwość , 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 ustawić 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 Get-Date cmdlet używa parametru Date , aby określić datę i godzinę. Obiekty DateTime są przechowywane w $Begin zmiennych i $End . Polecenie Get-EventLog cmdlet używa parametru LogName do określenia dziennika systemowego. Parametr EntryType określa typ zdarzenia Błąd. Zakres daty i godziny jest ustawiany przez parametr After i zmienną oraz $Begin parametr Before i $End zmienną.

Parametry

-After

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

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 Get-EventLog zwraca rozszerzony obiekt PSObject z dodatkowymi właściwościami EventLogName, Source i InstanceId .

Aby zobaczyć efekt tego parametru, należy przekazać zdarzenia do Get-Member polecenia cmdlet i sprawdzić 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ą. Przed parametrem data i godzina są wykluczone z danych wyjściowych. Wprowadź obiekt DateTime, taki jak wartość zwrócona Get-Date przez polecenie cmdlet.

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 parametr ComputerName nie jest określony, Get-EventLog wartość domyślna to komputer lokalny. Parametr akceptuje również kropkę (.), aby określić komputer lokalny.

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:Int32[]
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:Int64[]
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 polecenia 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:Int32
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-EventLogelementu .

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 List , 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).