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-EventLog
elementu .
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).