- Nahihigitan ng Get-WinEvent ang Get-EventLog sa pamamagitan ng pagpayag sa mga advanced na filter at access sa mga modernong log
- Ang paggamit ng mga hash table at XPath ay ino-optimize ang paghahanap para sa mga partikular na kaganapan sa malalaking volume ng data. mga tala
- Nagbibigay-daan sa pamamahala ng lokal, malayuan at naka-archive na mga log na may kontrol sa mga pahintulot at kredensyal
PowerShell Nag-evolve ito sa isa sa mga mahahalagang tool para sa advanced na pamamahala ng system. Windows. Kabilang sa mga pinakamakapangyarihang cmdlet nito ay Get-WinEvent, na nagbibigay-daan sa mga administrator at user na makakuha ng mga log ng kaganapan, mga aksyon sa pag-audit, at subaybayan ang katayuan ng kanilang mga computer o server sa isang napaka-detalyado at flexible na paraan.
Sa artikulong ito matutuklasan mo ang lahat ng kailangan mong malaman tungkol sa Get-WinEvent PowerShell command: mula sa syntax nito, mga pagkakaiba mula sa iba pang mga classic na cmdlet tulad ng Get-EventLog, mga praktikal na halimbawa, pag-optimize ng filter gamit ang mga hash table, mga detalye sa mga pangunahing parameter, at mga tip para masulit ito para sa pagsusuri sa lokal at malayong kaganapan. Kung gusto mong master ang log analysis at troubleshooting sa Windows, ipagpatuloy ang pagbabasa.
Ano ang Get-WinEvent at bakit ito kapaki-pakinabang?
Get-WinEvent ay isang Windows-only cmdlet na nagbibigay-daan sa iyong i-access at i-browse ang mga log ng kaganapan ng operating system. Ang pangunahing function nito ay upang kunin ang mga kaganapan na nakaimbak sa parehong mga klasikong log (tulad ng "System" o "Application") at mga log na ginawa mula sa Windows Vista pataas, pati na rin ang mga panlabas na file (.evtx, .etl y .evt).
Isinasama ng utos na ito makabuluhang pakinabang kaysa sa hinalinhan nito, Get-EventLogHalimbawa, maaari kang mag-query ng mga log na hindi maabot ng Get-EventLog, gumamit ng mga advanced na filter (mga hash table, XPath, structured XML), at magtrabaho kasama ang mga malayuang log nang hindi umaasa sa classic na remoting system ng PowerShell. kaya, Ito ay nagiging isang pangunahing tool para sa pagsubaybay, pag-audit at paglutas ng mga insidente. o pag-aralan ang aktibidad ng parehong mga indibidwal na system at malalaking imprastraktura ng server.
Pangkalahatang syntax at mga set ng parameter
Ang Get-WinEvent cmdlet Nagtatampok ito ng maraming nalalaman na syntax na sumusuporta sa maraming gamit depende sa impormasyong gusto mong makuha at ang uri ng filter na iyong ilalapat. Ang ilan sa mga pinakakaraniwang set ng parameter ay:
- Maghanap ayon sa pangalan ng tala:
Get-WinEvent >] ...
- Listahan ng mga magagamit na talaan:
Get-WinEvent -ListLog *
- Tanong ng mga tagapagbigay ng talaan:
Get-WinEvent -ListProvider *
- Pag-filter ayon sa hash table:
Get-WinEvent -FilterHashtable @{ LogName='Application'; Id=1001 }
- Na-filter ng XPath:
Get-WinEvent -FilterXPath "*]"
- Na-filter ng XML:
Get-WinEvent -FilterXml $xmlQuery
Mahalagang tala: Nang walang mga parameter, kinukuha ng Get-WinEvent ang lahat ng mga kaganapan mula sa lahat ng mga log sa lokal na computer, na maaaring makabuo ng napakahabang output. Upang ihinto ang utos, pindutin lamang CTRL + C.
Mga pangunahing parameter ng Get-WinEvent
Ang cmdlet ay sumusuporta sa isang malawak na iba't ibang mga parameter, na nagbibigay-daan sa iyo upang makakuha ng eksaktong impormasyon na kailangan mo. Narito ang isang detalyadong buod ng pinakamahalaga:
- -LogName: Binibigyang-daan kang tumukoy ng isa o higit pang mga pangalan ng log ng kaganapan. Tinatanggap ang mga wildcard.
- -ProviderName: I-filter ang mga resulta batay sa mga partikular na provider ng kaganapan. Tamang-tama para sa pagtukoy sa pinagmulan ng mga partikular na kaganapan.
- -Path: Binibigyang-daan kang mag-query ng mga kaganapan sa mga file na naka-save gamit ang .evtx, .evt o .etl na extension, kahit na mula sa iba pang mga machine.
- -FilterHashtable: Sinusuportahan ang hash table na may mga key-value pairs para mahusay na mag-filter ayon sa maraming pamantayan (gaya ng LogName, ProviderName, ID, Level, mga petsa, atbp.).
- -FilterXPath / -FilterXml: Pinapayagan ka nitong maglapat ng mga filter batay sa XPath o XML na mga query para sa mga kumplikadong pamantayan.
- -MaxEvents: Nililimitahan ang maximum na bilang ng mga kaganapan na ibinalik, na lubhang kapaki-pakinabang upang maiwasan ang napakalaking output.
- -Pinakamatanda: Maaari mong tukuyin upang makatanggap ng mga kaganapan na pinagsunod-sunod mula sa pinakaluma hanggang sa pinakabago (bilang default, ito ay kabaligtaran).
- -ComputerName: Nagla-log ang query sa mga malalayong computer sa pamamagitan ng pagtukoy sa pangalan ng NetBIOS, FQDN, o IP.
- -Credential: Binibigyang-daan kang mag-authenticate bilang isa pang user o may mga kredensyal maliban sa iyong mga kasalukuyan.
- -Lakas: Nangangailangan ito ng pagsasama ng mga debug at analytics log sa query, bilang karagdagan sa mga karaniwan.
Marami sa mga parameter na ito ay maaaring pagsamahin upang makamit ang isang tumpak at mahusay na query.
Advanced na Pag-filter: Paggamit ng FilterHashtable
Isa sa mga Pinakamahusay na lakas ng Get-WinEvent ay ang kakayahang mag-filter ng mga kaganapan gamit ang mga hash table. Sa halip na kunin ang lahat ng kaganapan at pagkatapos ay i-filter ang mga ito sa pangalawang hakbang (isang bagay na hindi epektibo), FilterHashtable Naglalapat ito ng mga filter sa mismong proseso ng pagkolekta, pagpapabuti ng pagganap at pagbabawas ng pagkonsumo ng mapagkukunan, lalo na sa malalaking log.
Ang hash table sa kontekstong ito ay binubuo ng mga key-value pairs gaya ng @{ LogName='Application'; Id=1001; Level=2 }
Ang bawat pares ay magiging criterion sa paghahanap. Kabilang sa mga tinatanggap na pangunahing key ang:
- LogName (Pinapayagan ang mga wildcard): pangalan ng record.
- Pangalan ng provider (suporta sa wildcard): pinagmulan ng kaganapan.
- Landas: landas sa mga naka-save na log file.
- Id: numeric identifier ng kaganapan.
- Antas: antas ng kalubhaan (Error=2, Warning=3, Informational=4…)
- Mga Keyword: i-filter ayon sa mga teknikal na keyword (Mahabang[] uri).
- Oras ng umpisa / EndTime: i-filter ayon sa hanay ng petsa.
- User ID: SID o username na nauugnay sa kaganapan.
- data o : custom na data ng kaganapan.
Halimbawa, upang makakuha ng mga kritikal na kaganapan mula sa isang partikular na vendor sa log ng application mula sa nakalipas na 2 araw:
$fecha = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='.NET Runtime'; Level=1; StartTime=$fecha }
Tip: Ang bawat key sa hash table ay dapat lumabas nang isang beses lang, at ang mga wildcard ay valid lang sa LogName at ProviderName.
Mga praktikal na halimbawa ng paggamit
Ang pagtatanong at pagsusuri ng mga log ng kaganapan ay maaaring mukhang nakakapagod, ngunit sa versatility ng cmdlet na ito, ang mga posibilidad ay walang katapusan. Narito ang ilang halimbawa batay sa totoong buhay na mga senaryo:
- Ilista ang lahat ng mga log ng kaganapan na magagamit sa system:
Get-WinEvent -ListLog *
- Kunin ang pinakabagong mga kaganapan mula sa log ng 'System':
Get-WinEvent -LogName System -MaxEvents 10
- I-filter lang ang mga error sa application:
Get-WinEvent -FilterHashtable @{ LogName='Application'; Level=2 }
- Tingnan ang mga kaganapang nabuo ng isang provider:
Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='Application Error' }
- Suriin ang mga kaganapan sa iba pang mga log ng computer:
Get-WinEvent -LogName System -ComputerName Servidor01
- Basahin ang mga naka-save na file:
Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'
- Kumuha ng mga kaganapan para sa isang partikular na keyword:
Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* | Group-Object -Property LevelDisplayName, LogName -NoElement | Format-Table -AutoSize
Output, ibinalik na mga bagay, at pagiging tugma
Depende sa mga parameter na ginamit, Get-WinEvent maaaring ibalik ang mga bagay na may iba't ibang uri:
- EventLogConfiguration: kapag gumagamit -ListLog, ay nagbibigay ng configuration at mga katangian para sa bawat tala.
- ProviderMetadata: sa -ListProvider, ay nagpapakita ng metadata para sa mga provider ng kaganapan.
- EventLogRecord: Bilang default, kinakatawan nito ang bawat partikular na kaganapan at ang mga katangian nito (petsa, ID, mensahe, atbp.).
Maaaring iproseso ang mga ito sa isang pipeline at i-filter, igrupo, o i-export sa iba pang mga format (CSV, HTML, XML, atbp.). Ito ay nagkakahalaga ng tandaan na Get-WinEvent unti-unting pinapalitan Get-EventLog, na mas limitado at sinusuportahan lamang ang mga klasikong log.
Advanced na visualization ng log at pagsusuri
Bilang karagdagan sa pagsusuri ng kaganapan sa pamamagitan ng console o mga script, maaari mong suriin ang mga log gamit ang Viewer ng kaganapan mula sa Windows ((https://mundobytes.com/how-to-use-windows-event-viewer-to-detect-and-anticipate-problems/)), bagama't ang Get-WinEvent ay nagbibigay-daan para sa higit na automation, integration, at remote na paggamit.
Upang suriin ang mga uso o isyu, samantalahin ang mga cmdlet tulad ng Pangkat-Bagay upang pangkatin ang mga kaganapan ayon sa ID, Pagbukud-bukurin-Bagay upang ayusin ang mga ito, at Piliin-Bagay upang limitahan ang mga field na ipinapakita. Halimbawa, upang makita kung gaano karaming mga kaganapan ng bawat uri ang mayroon ka sa log:
$eventos = Get-WinEvent -LogName 'Windows PowerShell'
$eventos | Group-Object -Property LevelDisplayName | Format-Table Count, Name
XPath at XML Filtering: Kapag Kailangan Mo ng Pinakamataas na Katumpakan
Sa partikular na kumplikadong mga sitwasyon, maaaring maging kapaki-pakinabang ang paggamit ng mga parameter tulad ng -FilterXPath y -FilterXml para sa mga advanced na query. Halimbawa, upang mahanap ang mga kaganapan ng isang tiyak na antas at petsa sa log ng 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
Paghahambing sa Get-EventLog at pinakamahuhusay na kagawian
Bagaman Get-EventLog Umiiral pa rin ito para sa backward compatibility, ngunit ang mga kakayahan nito ay kapansin-pansing mababa. Halimbawa, ina-access lang nito ang mga classic na log at hindi pinapayagan ang pag-filter ng provider o sa pamamagitan ng XPath/Hashtable. Habang sumusulong ang PowerShell at lumalaki ang iyong mga pangangailangan, magandang ideya na maging pamilyar ka rito. Get-WinEvent at samantalahin ang mga advanced na filter at high-volume na pagproseso ng kaganapan na may mas mababang epekto sa performance.
Ilang kapaki-pakinabang na rekomendasyon:
- paggamit Get-EventLog para sa mabilis na mga query sa system o security logs.
- Mag-apply Get-WinEvent upang i-filter at suriin ang mga modernong log, naka-archive na log, at kumplikadong mga sitwasyon.
- Upang mahanap ang eksaktong path ng mga hindi klasikong log, gamitin muna ang Event Viewer at kopyahin ang path para sa parameter -LogName.
- Iwasang ilagay ang lahat ng kaganapan sa console: gamitin -MaxEvents upang limitahan ang output o filter gamit ang mga hash table.
- Kapag nagtatrabaho sa malalaking log o sa maraming team, i-automate ang mga gawain gamit ang mga script at pipeline.
Mga Variable at Pag-customize ng PowerShell Log
Binibigyang-daan ka ng PowerShell na i-configure kung anong mga uri ng mga kaganapan ang naka-log sa pamamagitan ng pag-edit ng mga variable ng kagustuhan tulad ng $LogEngineLifeCycleEvent
o $LogCommandHealthEvent
. Sa ganitong paraan maaari kang magpasya kung itatala ang mga detalye ng engine, mga supplier, o comandos naisakatuparan, pagsasaayos ng granularity ayon sa iyong mga pangangailangan.
Ang pag-activate/pag-deactivate ay ginagawa tulad ng sumusunod:
$LogCommandLifeCycleEvent = $true # Para registrar inicio/fin de comandos
$LogProviderHealthEvent = $false # Para desactivar eventos de proveedor
Ang mga pagbabago ay nakakaapekto lamang sa kasalukuyang session, maliban kung idinagdag sa PowerShell profile.
Mga Madalas Itanong tungkol sa Get-WinEvent at Event Logs
- Maaari ko bang i-clear ang PowerShell event log?
Kung kasamaClear-EventLog -LogName "Windows PowerShell"
o mula sa Event Viewer (right click > Empty Log). - Saan nakaimbak ang mga file ng log ng kaganapan?
Sila ay matatagpuan sa%SystemRoot%\System32\winevt\Logs
sa mga .evtx na file. - Posible bang ipasa ang mga log sa isang sentralisadong sistema?
Tama. Maaaring i-configure ang Windows upang ipasa ang mga log ng kaganapan sa isang sentral na server gamit ang mga native na serbisyo o mga panlabas na tool. - Gumagana ba ang Get-WinEvent sa anumang bersyon ng Windows?
Ito ay sinusuportahan lamang sa Windows Vista at Server 2008 R2 at mas bago. Hindi ito gumagana sa Windows PE o Nano Server.
Masigasig na manunulat tungkol sa mundo ng mga byte at teknolohiya sa pangkalahatan. Gustung-gusto kong ibahagi ang aking kaalaman sa pamamagitan ng pagsusulat, at iyon ang gagawin ko sa blog na ito, ipakita sa iyo ang lahat ng mga pinaka-kagiliw-giliw na bagay tungkol sa mga gadget, software, hardware, teknolohikal na uso, at higit pa. Ang layunin ko ay tulungan kang mag-navigate sa digital na mundo sa simple at nakakaaliw na paraan.