Jak używać polecenia Get-WinEvent w programie PowerShell

Ostatnia aktualizacja: 30/07/2025
Autor: Isaac
  • Get-WinEvent przewyższa Get-EventLog, umożliwiając zaawansowane filtry i dostęp do nowoczesnych logów
  • Użycie tablic skrótów i XPath optymalizuje wyszukiwanie określonych zdarzeń w dużych wolumenach danych. dzienniki
  • Umożliwia zarządzanie lokalnymi, zdalnymi i archiwalnymi logami z kontrolą nad uprawnieniami i poświadczeniami

Pobierz-WinEvent PowerShell

PowerShell Stał się jednym z podstawowych narzędzi do zarządzania zaawansowanymi systemami. WindowsWśród jego najpotężniejszych poleceń cmdlet znajduje się Zdarzenie Get-Win, który umożliwia administratorom i użytkownikom uzyskiwanie dostępu do dzienników zdarzeń, przeprowadzanie audytów i monitorowanie stanu komputerów lub serwerów w bardzo szczegółowy i elastyczny sposób.

W tym artykule dowiesz się wszystkiego, co musisz wiedzieć o Polecenie Get-WinEvent programu PowerShell: od składni, przez różnice w stosunku do innych klasycznych poleceń cmdlet, takich jak Get-EventLog, po praktyczne przykłady, optymalizację filtrów z wykorzystaniem tablic skrótów, szczegółowe informacje o kluczowych parametrach oraz wskazówki, jak najlepiej wykorzystać je do analizy zdarzeń lokalnych i zdalnych. Jeśli chcesz opanować analizę logów i rozwiązywanie problemów w systemie Windows, czytaj dalej.

Czym jest Get-WinEvent i dlaczego jest tak przydatny?

Zdarzenie Get-Win to polecenie cmdlet dostępne wyłącznie w systemie Windows, które umożliwia dostęp i przeglądanie dzienników zdarzeń systemu operacyjnego. Jego główną funkcją jest pobieranie zdarzeń zapisanych zarówno w klasycznych dziennikach (takich jak „System” lub „Aplikacja”), jak i w dziennikach utworzonych od systemu Windows Vista, a także w plikach zewnętrznych (.evtx, .etl y .wydarzenie).

To polecenie zawiera znaczące zalety w stosunku do swojego poprzednika, Pobierz-EventLogNa przykład możesz przeszukiwać logi, do których nie ma dostępu polecenie Get-EventLog, korzystać z zaawansowanych filtrów (tabele skrótów, XPath, ustrukturyzowany XML) i pracować ze zdalnymi logami bez polegania na klasycznym systemie zdalnego dostępu programu PowerShell. Staje się podstawowym narzędziem do monitorowania, audytu i rozwiązywania incydentów. lub analizować aktywność zarówno pojedynczych systemów, jak i dużych infrastruktur serwerowych.

Ogólna składnia i zestawy parametrów

Składnia polecenia Get-WinEvent programu PowerShell

Polecenie cmdlet Get-WinEvent Posiada wszechstronną składnię, która umożliwia wiele zastosowań w zależności od informacji, które chcesz uzyskać, i rodzaju zastosowanego filtra. Oto niektóre z najpopularniejszych zestawów parametrów:

  • Wyszukaj według nazwy rekordu: Get-WinEvent >] ...
  • Lista dostępnych rekordów: Get-WinEvent -ListLog *
  • Zapytanie dostawców rekordów: Get-WinEvent -ListProvider *
  • Filtrowanie według tablicy skrótów: Get-WinEvent -FilterHashtable @{ LogName='Application'; Id=1001 }
  • Filtrowane według XPath: Get-WinEvent -FilterXPath "*]"
  • Filtrowane według XML: Get-WinEvent -FilterXml $xmlQuery

Ważna uwaga: Bez parametrów polecenie Get-WinEvent pobiera wszystkie zdarzenia ze wszystkich dzienników na komputerze lokalnym, co może generować bardzo długie dane wyjściowe. Aby zatrzymać polecenie, wystarczy nacisnąć CTRL + C.

  Właściwy sposób na odkrywanie importowanych zdjęć na iPhonie i iPadzie

Główne parametry Get-WinEvent

Polecenie cmdlet obsługuje szeroką gamę parametrów, umożliwiając uzyskanie dokładnie tych informacji, których potrzebujesz. Oto szczegółowe podsumowanie najważniejszych z nich:

  • -NazwaLogu: Umożliwia określenie jednej lub więcej nazw dziennika zdarzeń. Akceptowane są symbole wieloznaczne.
  • -NazwaDostawcy: Filtruj wyniki na podstawie konkretnych dostawców zdarzeń. Idealne do identyfikacji źródła konkretnych zdarzeń.
  • -Ścieżka: Umożliwia wyszukiwanie zdarzeń w plikach zapisanych z rozszerzeniem .evtx, .evt lub .etl, nawet na innych komputerach.
  • -FilterHashtable: Obsługuje tablicę skrótów z parami klucz-wartość, umożliwiając efektywne filtrowanie według wielu kryteriów (takich jak LogName, ProviderName, ID, Level, dates itd.).
  • -FilterXPath / -FilterXml: Umożliwiają stosowanie filtrów bazujących na zapytaniach XPath lub XML dla złożonych kryteriów.
  • -MaxEvents: Ogranicza maksymalną liczbę zwracanych zdarzeń, co jest bardzo przydatne, gdy chcemy uniknąć gigantycznych wyników.
  • -Najstarszy: Możesz określić, że chcesz otrzymywać zdarzenia posortowane od najstarszych do najnowszych (domyślnie jest odwrotnie).
  • -NazwaKomputera: Przeszukuj dzienniki na komputerach zdalnych, określając nazwę NetBIOS, FQDN lub adres IP.
  • -Mandat: Umożliwia uwierzytelnianie jako inny użytkownik lub przy użyciu innych danych logowania niż obecne.
  • -Siła: Wymaga uwzględnienia w zapytaniu dzienników debugowania i analiz, oprócz standardowych dzienników.

Wiele z tych parametrów można łączyć, aby uzyskać precyzyjne i wydajne zapytanie.

Zaawansowane filtrowanie: korzystanie z FilterHashtable

Tabela filtrowania hashtable PowerShell

Jednym z Największe atuty Get-WinEvent to możliwość filtrowania zdarzeń za pomocą tablic skrótów. Zamiast pobierania wszystkich zdarzeń i filtrowania ich w drugim kroku (co jest nieefektywne), Filtruj tabelę haszującą Stosuje filtry w samym procesie zbierania danych, co zwiększa wydajność i zmniejsza zużycie zasobów, zwłaszcza w przypadku dużych dzienników.

W tym kontekście tablica skrótów składa się z par klucz-wartość, takich jak: @{ LogName='Application'; Id=1001; Level=2 }Każda para będzie stanowić kryterium wyszukiwania. Akceptowane klucze podstawowe obejmują:

  • Nazwa dziennika (dozwolone są symbole wieloznaczne): nazwa rekordu.
  • NazwaDostawcy (obsługa symboli wieloznacznych): źródło zdarzenia.
  • ścieżka: ścieżka do zapisanych plików dziennika.
  • Id: numeryczny identyfikator zdarzenia.
  • Poziom:poziom ważności (Błąd=2, Ostrzeżenie=3, Informacyjny=4…)
  • Słowa kluczowe:filtruj według słów kluczowych technicznych (typ Long[]).
  • Czas rozpoczęcia / Koniec czasu: filtruj według zakresu dat.
  • ID użytkownika: Identyfikator SID lub nazwa użytkownika powiązana ze zdarzeniem.
  • Dane o : niestandardowe dane zdarzeń.

Na przykład, aby uzyskać krytyczne zdarzenia od konkretnego dostawcy w dzienniku aplikacji z ostatnich 2 dni:

$fecha = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='.NET Runtime'; Level=1; StartTime=$fecha }

Porada: Każdy klucz w tabeli skrótów może pojawić się tylko raz, a symbole wieloznaczne są dozwolone tylko w LogName i ProviderName.

  Napraw błąd „Ograniczona lub brak łączności” w systemie Windows 10

Praktyczne przykłady zastosowania

Przeszukiwanie i analizowanie dzienników zdarzeń może wydawać się żmudne, ale dzięki wszechstronności tego polecenia cmdlet możliwości są nieograniczone. Oto kilka przykładów opartych na rzeczywistych scenariuszach:

  • Wyświetl wszystkie dzienniki zdarzeń dostępne w systemie:
    Get-WinEvent -ListLog *
  • Pobierz najnowsze zdarzenia z dziennika „System”:
    Get-WinEvent -LogName System -MaxEvents 10
  • Filtruj tylko błędy aplikacji:
    Get-WinEvent -FilterHashtable @{ LogName='Application'; Level=2 }
  • Wyświetl zdarzenia wygenerowane przez dostawcę:
    Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='Application Error' }
  • Sprawdź zdarzenia w innych dziennikach komputera:
    Get-WinEvent -LogName System -ComputerName Servidor01
  • Odczytaj zapisane pliki:
    Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'
  • Pobierz zdarzenia dla określonego słowa kluczowego:
    Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* | Group-Object -Property LevelDisplayName, LogName -NoElement | Format-Table -AutoSize

Dane wyjściowe, zwrócone obiekty i zgodność

W zależności od użytych parametrów, Zdarzenie Get-Win może zwracać obiekty różnych typów:

  • Konfiguracja dziennika zdarzeń: podczas używania -ListLog, zapewnia konfigurację i właściwości dla każdego rekordu.
  • Metadane dostawcy: z -ListProvider, wyświetla metadane dla dostawców zdarzeń.
  • Rekord dziennika zdarzeń: Domyślnie reprezentuje każde konkretne zdarzenie i jego atrybuty (datę, identyfikator, wiadomość itp.).

Można je przetwarzać w potoku, filtrować, grupować lub eksportować do innych formatów (CSV, HTML, XML itp.). Warto pamiętać, że Zdarzenie Get-Win stopniowo zastępuje Pobierz-EventLog, który był bardziej ograniczony i obsługiwał tylko klasyczne logi.

Zaawansowana wizualizacja i analiza dziennika

Oprócz analizy zdarzeń za pomocą konsoli lub skryptów, możesz przeglądać dzienniki za pomocą Przeglądarka zdarzeń z systemu Windows ((https://mundobytes.com/how-to-use-windows-event-viewer-to-detect-and-anticipate-problems/)), chociaż Get-WinEvent pozwala na większą automatyzację, integrację i zdalne użytkowanie.

Aby analizować trendy lub problemy, skorzystaj z poleceń cmdlet, takich jak Obiekt grupowy grupowanie zdarzeń według ID, Sortuj obiekt aby je posortować i Select-Object Aby ograniczyć liczbę wyświetlanych pól. Na przykład, aby sprawdzić, ile zdarzeń każdego typu znajduje się w dzienniku:

$eventos = Get-WinEvent -LogName 'Windows PowerShell'
$eventos | Group-Object -Property LevelDisplayName | Format-Table Count, Name

Filtrowanie XPath i XML: Kiedy potrzebujesz maksymalnej precyzji

W szczególnie złożonych scenariuszach przydatne może być użycie parametrów takich jak: -FilterXPath y -FilterXml Do zaawansowanych zapytań. Na przykład, aby znaleźć zdarzenia o określonym poziomie i dacie w dzienniku programu Windows PowerShell:

# Filtrado por XPath
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath "*]]"

# Filtrado por XML
$xmlQuery = @'
<QueryList>
  <Query Path="Windows PowerShell">
    <Select Path="System">*]]</Select>
  </Query>
</QueryList>'
Get-WinEvent -FilterXml $xmlQuery

Porównanie z Get-EventLog i najlepszymi praktykami

Porównanie Get-EventLog i Get-WinEvent

Chociaż Pobierz-EventLog Nadal istnieje ze względu na wsteczną kompatybilność, ale jego możliwości są zauważalnie słabsze. Na przykład, uzyskuje dostęp tylko do klasycznych logów i nie pozwala na filtrowanie według dostawcy ani za pomocą XPath/Hashtable. W miarę rozwoju programu PowerShell i wzrostu potrzeb, warto się z nim zapoznać. Zdarzenie Get-Win i skorzystaj z zaawansowanych filtrów i przetwarzania dużej liczby zdarzeń przy mniejszym wpływie na wydajność.

  Nie można zainstalować systemu Windows 10 na tym dysku [NAJNOWSZY PRZEWODNIK].

Kilka przydatnych rekomendacji:

  • Użyj Pobierz-EventLog do szybkich zapytań w systemie lub logach bezpieczeństwa.
  • Zastosuj Zdarzenie Get-Win do filtrowania i analizowania nowoczesnych logów, logów archiwalnych i złożonych scenariuszy.
  • Aby znaleźć dokładną ścieżkę do dzienników nieklasycznych, najpierw użyj Podglądu zdarzeń i skopiuj ścieżkę dla parametru -NazwaLogu.
  • Unikaj zrzucania wszystkich zdarzeń na konsolę: użyj -MaxEvents Aby ograniczyć dane wyjściowe lub filtrować je przy użyciu tablic skrótów.
  • Pracując z dużymi dziennikami lub w obrębie wielu zespołów, automatyzuj zadania za pomocą skryptów i potoków.

Zmienne dziennika programu PowerShell i dostosowywanie

W programie PowerShell można skonfigurować typy rejestrowanych zdarzeń, edytując zmienne preferencji, takie jak: $LogEngineLifeCycleEvent o $LogCommandHealthEventW ten sposób możesz zdecydować, czy chcesz rejestrować dane dotyczące silnika, dostawców lub polecenia wykonane, dostosowując szczegółowość do Twoich potrzeb.

Aktywację/dezaktywację przeprowadza się w następujący sposób:

$LogCommandLifeCycleEvent = $true   # Para registrar inicio/fin de comandos
$LogProviderHealthEvent = $false    # Para desactivar eventos de proveedor

Zmiany dotyczą tylko bieżącej sesji, chyba że zostaną dodane do profilu programu PowerShell.

Często zadawane pytania dotyczące Get-WinEvent i dzienników zdarzeń

  • Czy mogę wyczyścić dziennik zdarzeń programu PowerShell?
    Jeśli z Clear-EventLog -LogName "Windows PowerShell" lub z Podglądu zdarzeń (kliknij prawym przyciskiem myszy > Opróżnij dziennik).
  • Gdzie są przechowywane pliki dziennika zdarzeń?
    Znajdują się w %SystemRoot%\System32\winevt\Logs w plikach .evtx.
  • Czy możliwe jest przekazywanie logów do scentralizowanego systemu?
    Zgadza się. System Windows można skonfigurować tak, aby przekazywał dzienniki zdarzeń do serwera centralnego za pomocą usług natywnych lub narzędzi zewnętrznych.
  • Czy Get-WinEvent działa w każdej wersji systemu Windows?
    Jest obsługiwany tylko w systemach Windows Vista i Server 2008 R2 i nowszych. Nie działa w systemach Windows PE ani Nano Server.
Podgląd zdarzeń systemu Windows Eventvwr
Podobne artykuł:
Jak używać Podglądu zdarzeń systemu Windows do wykrywania i przewidywania problemów

Zostaw komentarz