Kuidas kasutada käsku Get-WinEvent PowerShellis?

Viimane uuendus: 30/07/2025
Autor: Isaac
  • Get-WinEvent ületab Get-EventLogi, võimaldades täiustatud filtreid ja juurdepääsu tänapäevastele logidele
  • Räsitabelite ja XPathi kasutamine optimeerib konkreetsete sündmuste otsingut suurtes andmemahtudes. logisid
  • Võimaldab hallata kohalikke, kaug- ja arhiveeritud logisid koos õiguste ja volituste kontrolliga

Get-WinEvent PowerShelli

PowerShellist on saanud üks olulisemaid tööriistu Windowsi süsteemi täiustatud haldamiseks . Selle võimsaimate cmdlettide hulgas on Get-WinEvent , mis võimaldab administraatoritel ja kasutajatel hankida sündmuste logisid, auditeerida toiminguid ning jälgida oma arvutite või serverite olekut väga detailsel ja paindlikul viisil.

Selles artiklis leiate kõik, mida peate teadma PowerShelli käsu Get-WinEvent kohta : alates selle süntaksist ja erinevustest võrreldes teiste klassikaliste cmdlet-käskudega (nt Get-EventLog) kuni praktiliste näideteni, filtrite optimeerimiseni räsitabelite abil, üksikasjadeni peamiste parameetrite kohta ja näpunäideteni, kuidas käsku nii kohalike kui ka kaugsündmuste analüüsimiseks maksimaalselt ära kasutada. Kui soovite Windowsi logianalüüsi ja tõrkeotsinguga hakkama saada, lugege edasi.

Mis on Get-WinEvent ja miks see nii kasulik on?

Get-WinEvent on ainult Windowsile mõeldud cmdlet, mis võimaldab teil juurde pääseda operatsioonisüsteemi sündmuste logidele ja neid uurida. Selle peamine funktsioon on hankida sündmusi, mis on salvestatud nii klassikalistesse logidesse (nt „Süsteem” või „Rakendus”) kui ka Windows Vistast ja hilisematest versioonidest loodud logidesse, aga ka välistesse failidesse ( .evtx , .etl ja .evt ).

See käsk pakub oma eelkäija Get-EventLogi ees olulisi eeliseid . Näiteks saab see pärida logisid, millele Get-EventLog ei pääse juurde, võimaldab kasutada täiustatud filtreid (räsitabelid, XPath, struktureeritud XML) ja võimaldab töötada kauglogidega ilma PowerShelli traditsioonilist kaugtöösüsteemi kasutamata. See teeb sellest olulise tööriista nii üksikute süsteemide kui ka suurte serveritaristute jälgimiseks, auditeerimiseks ja tõrkeotsinguks , samuti nii üksikute süsteemide kui ka suurte serveritaristute tegevuse analüüsimiseks.

Üldine süntaks ja parameetrite komplektid

Get-WinEvent PowerShelli süntaks

Cmdlet-käsul Get-WinEvent on mitmekülgne süntaks, mis toetab mitut kasutusvõimalust olenevalt sellest, millist teavet soovite hankida ja millist filtrit rakendate. Mõned levinumad parameetrite komplektid on:

  • Otsi kirje nime järgi: Get-WinEvent >] ...
  • Saadaval olevate kirjete loend: Get-WinEvent -ListLog *
  • Dokumendipakkujate päring: Get-WinEvent -ListProvider *
  • Filtreerimine räsi tabeli järgi: Get-WinEvent -FilterHashtable @{ LogName='Application'; Id=1001 }
  • Filtreeritud XPathi järgi: Get-WinEvent -FilterXPath "*]"
  • XML-i järgi filtreeritud: Get-WinEvent -FilterXml $xmlQuery

Tähtis märkus: Ilma parameetriteta hangib Get-WinEvent kõik sündmused kõigist kohaliku arvuti logidest, mis võib genereerida väga pika väljundi. Käsu peatamiseks vajutage lihtsalt CTRL + C.

  Lihtsad viisid Yahoo meili loomiseks ilma telefoninumbrita

Get-WinEventi peamised parameetrid

Cmdlet toetab laia valikut parameetreid, mis võimaldavad teil hankida täpselt vajaliku teabe. Siin on üksikasjalik kokkuvõte kõige olulisematest:

  • -Loginimi: Võimaldab määrata ühe või mitu sündmuste logi nime. Metamärke aktsepteeritakse.
  • -PakkujaNimi: Filtreeri tulemusi konkreetsete sündmuste pakkujate põhjal. Ideaalne konkreetsete sündmuste allika tuvastamiseks.
  • -Tee: Võimaldab pärida sündmusi failides, mis on salvestatud laiendiga .evtx, .evt või .etl, isegi teistest masinatest.
  • -FilterHashtable: Toetab räsitabelit võtme-väärtuse paaridega, et tõhusalt filtreerida mitme kriteeriumi (nt LogName, ProviderName, ID, Level, kuupäevad jne) alusel.
  • -FilterXPath / -FilterXml: Need võimaldavad teil rakendada filtreid, mis põhinevad XPath- või XML-päringutel keerukate kriteeriumide jaoks.
  • -MaxEvents: Piirab tagastatavate sündmuste maksimaalset arvu, mis on väga kasulik hiiglaslike väljundite vältimiseks.
  • -Vanim: Saate määrata, et sündmused sorteeritaks vanimast uusimani (vaikimisi on see vastupidi).
  • -ArvutiNimi: Päringulogide pärimine kaugarvutites, määrates NetBIOS-nime, FQDN-i või IP-aadressi.
  • -Volitus: Võimaldab teil autentida teise kasutajana või muude volitustega kui teie praegused.
  • -Jõud: Lisaks tavapärastele logidele nõuab see päringusse ka silumis- ja analüüsilogide lisamist.

Paljusid neid parameetreid saab kombineerida, et saada täpne ja võimas päring.

Täpsem filtreerimine: FilterHashtable'i kasutamine

FilterHashtable PowerShell

Üks Get-WinEventi suurimaid tugevusi on võime filtreerida sündmusi räsitabelite abil. Kõigi sündmuste hankimise ja seejärel teises etapis filtreerimise asemel (mis on ebaefektiivne) rakendab FilterHashtable filtreid juba hankimisprotsessi ajal, parandades jõudlust ja vähendades ressursikasutust, eriti suurte logide puhul.

Selles kontekstis koosneb räsitabel võtme-väärtuse paaridest, näiteks @{ LogName='Application'; Id=1001; Level=2 }Iga paar on otsingukriteerium. Aktsepteeritud primaarvõtmed on järgmised:

  • LogiNimi (metamärgid lubatud): kirje nimi.
  • PakkujaNimi (metamärkide tugi): sündmuse allikas.
  • Tee: salvestatud logifailide tee.
  • Id: sündmuse numbriline identifikaator.
  • Tase: raskusaste (Viga=2, Hoiatus=3, Informatiivne=4…)
  • Märksõnad: filtreeri tehniliste märksõnade järgi (tüüp Long[].
  • Algusaeg / Lõpuaeg: filtreeri kuupäevavahemiku järgi.
  • Kasutaja ID: sündmusega seotud SID või kasutajanimi.
  • kuupäev o : kohandatud sündmuste andmed.

Näiteks konkreetse tarnija kriitiliste sündmuste saamiseks rakenduse logist viimase kahe päeva jooksul:

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

Näpunäide: Iga räsitabeli võti peaks esinema ainult üks kord ja metamärgid kehtivad ainult LogName ja ProviderName väljadel.

  Face ID keelamise viis iPhone'is

Praktilised kasutusnäited

Sündmuste logide päringute tegemine ja analüüsimine võib tunduda tüütu, kuid selle cmdleti mitmekülgsusega on võimalused lõputud. Siin on mõned näited reaalsetest stsenaariumidest:

  • Loetlege kõik süsteemis saadaolevad sündmuste logid:
    Get-WinEvent -ListLog *
  • Hankige uusimad sündmused süsteemilogist:
    Get-WinEvent -LogName System -MaxEvents 10
  • Filtreeri ainult rakenduse vead:
    Get-WinEvent -FilterHashtable @{ LogName='Application'; Level=2 }
  • Kuva pakkuja loodud sündmused:
    Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='Application Error' }
  • Kontrollige sündmusi teiste arvutite logides:
    Get-WinEvent -LogName System -ComputerName Servidor01
  • Loe salvestatud faile:
    Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'
  • Hankige sündmusi konkreetse märksõna jaoks:
    Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* | Group-Object -Property LevelDisplayName, LogName -NoElement | Format-Table -AutoSize

Väljund, tagastatud objektid ja ühilduvus

Sõltuvalt kasutatud parameetritest saab Get-WinEvent tagastada erinevat tüüpi objekte:

  • Sündmuste logi konfiguratsioon: kasutamisel -ListLog, pakub iga kirje konfiguratsiooni ja omadusi.
  • Pakkuja metaandmed: koos -Listipakkuja, kuvab sündmuste pakkujate metaandmeid.
  • Sündmuste logi kirje: Vaikimisi esindab see iga konkreetset sündmust ja selle atribuute (kuupäev, ID, sõnum jne).

Neid saab töödelda torujuhtmes ning filtreerida, grupeerida või eksportida teistesse vormingutesse (CSV, HTML, XML jne). Tasub märkida, et Get-WinEvent asendab järk-järgult Get-EventLog , mis oli piiratum ja toetas ainult klassikalisi logisid.

Täiustatud logide visualiseerimine ja analüüs

Lisaks sündmuste analüüsile konsooli või skriptide kaudu saate logisid uurida ka funktsiooni abil. Ürituse vaataja Windowsist ((https://mundobytes.com/how-to-use-windows-event-viewer-to-detect-and-anticipate-problems/)), kuigi Get-WinEvent võimaldab suuremat automatiseerimist, integratsiooni ja kaugkasutust.

Trendide või intsidentide analüüsimiseks kasutage cmdlette nagu Group-Object sündmuste rühmitamiseks ID järgi, Sort-Object nende sortimiseks ja Select-Object kuvatavate väljade piiramiseks. Näiteks selleks, et näha, mitu igat tüüpi sündmust teil logis on, tehke järgmist.

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

XPath ja XML-filtreerimine: kui vajate maksimaalset täpsust

Eriti keerulistes olukordades võib olla kasulik kasutada parameetreid nagu -FilterXPath ja -FilterXml keerukamate päringute jaoks. Näiteks teatud taseme ja kuupäevaga sündmuste leidmiseks Windows PowerShelli logist:

# 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

Võrdlus funktsiooniga Get-EventLog ja parimad tavad

Get-EventLogi ja Get-WinEventi võrdlus

Kuigi Get-EventLog on tagasiühilduvuse tagamiseks endiselt olemas, on selle võimalused märgatavalt halvemad. Näiteks pääseb see juurde ainult klassikalistele logidele ega luba filtreerida pakkuja järgi ega kasutada XPath/Hashtable'i. PowerShelli arenedes ja teie vajaduste kasvades on soovitatav tutvuda Get-WinEventiga ning kasutada ära selle täiustatud filtreid ja võimet töödelda suuri sündmustemahte väiksema jõudlusmõjuga.

  Remont: Mac on ühendatud WiFi-ga, kuid pole veebi

Mõned kasulikud soovitused:

  • kasutamine Hangi sündmuselogi kiirete päringute tegemiseks süsteemi- või turvalogides.
  • Kandideeri Get-WinEvent tänapäevaste logide, arhiveeritud logide ja keerukate stsenaariumide filtreerimiseks ja analüüsimiseks.
  • Mitteklassikaliste logide täpse tee leidmiseks kasutage esmalt sündmustevaaturit ja kopeerige parameetri tee. -Loginimi.
  • Väldi kõigi sündmuste konsoolile kuvamist: kasuta -MaxEvents väljundi piiramiseks või räsitabelitega filtreerimiseks.
  • Suurte logidega või mitme meeskonnaga töötades automatiseerige ülesandeid skriptide ja torujuhtmete abil.

PowerShelli logimuutujad ja kohandamine

PowerShell võimaldab teil konfigureerida logitud sündmuste tüüpe, muutes eelistuste muutujaid, näiteks $LogEngineLifeCycleEvent o $LogCommandHealthEventNii saate otsustada, kas salvestada mootori andmed, tarnijad või käsud teostatakse, kohandades detailsust vastavalt oma vajadustele.

Aktiveerimine/deaktiveerimine toimub järgmiselt:

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

Muudatused mõjutavad ainult praegust seanssi, välja arvatud juhul, kui need on PowerShelli profiili lisatud.

Korduma kippuvad küsimused Get-WinEventi ja sündmuste logide kohta

  • Kas ma saan PowerShelli sündmuste logi tühjendada?
    Kui koos Clear-EventLog -LogName "Windows PowerShell" või sündmustevaaturist (paremklõps > Tühjenda logi).
  • Kus sündmuste logifaile salvestatakse?
    Need asuvad %SystemRoot%\System32\winevt\Logs .evtx-failides.
  • Kas logisid on võimalik edastada tsentraliseeritud süsteemi?
    Õige. Windowsi saab konfigureerida sündmuste logisid keskserverisse edastama, kasutades natiivseid teenuseid või väliseid tööriistu.
  • Kas Get-WinEvent töötab mis tahes Windowsi versioonis?
    Seda toetatakse ainult Windows Vista ja Server 2008 R2 ning uuemate versioonide puhul. See ei tööta Windows PE ega Nano Serveriga.
Windowsi sündmustevaatur Eventvwr
Seotud artikkel:
Kuidas kasutada Windowsi sündmustevaaturit probleemide tuvastamiseks ja ennetamiseks