- Get-WinEvent mengatasi Get-EventLog dengan membenarkan penapis lanjutan dan akses kepada log moden
- Menggunakan jadual cincang dan XPath mengoptimumkan carian untuk acara tertentu dalam jumlah data yang besar. balak
- Membenarkan pengurusan log tempatan, jauh dan arkib dengan kawalan ke atas kebenaran dan bukti kelayakan
PowerShell Ia telah berkembang menjadi salah satu alat penting untuk pengurusan sistem lanjutan. Windows. Antara cmdletnya yang paling berkuasa ialah Dapatkan-WinEvent, yang membolehkan pentadbir dan pengguna mendapatkan log peristiwa, tindakan audit dan memantau status komputer atau pelayan mereka dengan cara yang sangat terperinci dan fleksibel.
Dalam artikel ini anda akan menemui semua yang anda perlu ketahui tentang Perintah Get-WinEvent PowerShell: daripada sintaksnya, perbezaan daripada cmdlet klasik lain seperti Get-EventLog, contoh praktikal, pengoptimuman penapis menggunakan jadual cincang, butiran tentang parameter utama dan petua untuk memanfaatkannya sepenuhnya untuk analisis acara tempatan dan jauh. Jika anda ingin menguasai analisis log dan menyelesaikan masalah dalam Windows, teruskan membaca.
Apakah itu Get-WinEvent dan mengapa ia sangat berguna?
Dapatkan-WinEvent ialah cmdlet Windows sahaja yang membolehkan anda mengakses dan menyemak imbas log peristiwa sistem pengendalian. Fungsi utamanya ialah untuk mendapatkan semula peristiwa yang disimpan dalam kedua-dua log klasik (seperti "Sistem" atau "Aplikasi") dan log yang dibuat daripada Windows Vista dan seterusnya, serta fail luaran (.evtx, .etl y .evt).
Perintah ini menggabungkan kelebihan yang ketara berbanding pendahulunya, Dapatkan-EventLogContohnya, anda boleh menanyakan log yang tidak dapat dicapai oleh Get-EventLog, menggunakan penapis lanjutan (jadual cincang, XPath, XML berstruktur) dan bekerja dengan log jauh tanpa bergantung pada sistem jauh klasik PowerShell. Oleh itu, Ia menjadi alat asas untuk memantau, mengaudit dan menyelesaikan insiden. atau menganalisis aktiviti kedua-dua sistem individu dan infrastruktur pelayan yang besar.
Sintaks am dan set parameter
Cmdlet Get-WinEvent Ia menampilkan sintaks serba boleh yang menyokong pelbagai kegunaan bergantung pada maklumat yang anda ingin perolehi dan jenis penapis yang anda gunakan. Beberapa set parameter yang paling biasa ialah:
- Cari mengikut nama rekod:
Get-WinEvent >] ...
- Senarai rekod yang ada:
Get-WinEvent -ListLog *
- Pertanyaan pembekal rekod:
Get-WinEvent -ListProvider *
- Menapis mengikut jadual cincang:
Get-WinEvent -FilterHashtable @{ LogName='Application'; Id=1001 }
- Ditapis oleh XPath:
Get-WinEvent -FilterXPath "*]"
- Ditapis oleh XML:
Get-WinEvent -FilterXml $xmlQuery
Nota Penting: Tanpa parameter, Get-WinEvent mendapatkan semula semua peristiwa daripada semua log pada komputer tempatan, yang boleh menjana output yang sangat panjang. Untuk menghentikan arahan, hanya tekan CTRL + C.
Parameter utama Get-WinEvent
Cmdlet menyokong pelbagai jenis parameter, membolehkan anda mendapatkan maklumat yang anda perlukan dengan tepat. Berikut ialah ringkasan terperinci yang paling penting:
- -Nama Log: Membolehkan anda menentukan satu atau lebih nama log peristiwa. Kad bebas diterima.
- -Nama Pembekal: Tapis hasil berdasarkan penyedia acara tertentu. Ideal untuk mengenal pasti sumber peristiwa tertentu.
- -Laluan: Membolehkan anda menanyakan acara dalam fail yang disimpan dengan sambungan .evtx, .evt atau .etl, walaupun dari mesin lain.
- -FilterHashtable: Menyokong jadual cincang dengan pasangan nilai kunci untuk menapis dengan cekap mengikut berbilang kriteria (seperti LogName, ProviderName, ID, Level, tarikh, dll.).
- -FilterXPath / -FilterXml: Mereka membenarkan anda menggunakan penapis berdasarkan pertanyaan XPath atau XML untuk kriteria yang kompleks.
- -MaxEvents: Hadkan bilangan maksimum peristiwa yang dikembalikan, yang sangat berguna untuk mengelakkan keluaran yang besar.
- -Tertua: Anda boleh menentukan untuk menerima acara yang disusun daripada yang paling lama kepada yang terbaru (secara lalai ia adalah sebaliknya).
- -Nama Komputer: Log pertanyaan pada komputer jauh dengan menyatakan nama NetBIOS, FQDN atau IP.
- -Tauliah: Membolehkan anda untuk mengesahkan sebagai pengguna lain atau dengan kelayakan selain daripada yang sedia ada anda.
- -Kekuatan: Ia memerlukan memasukkan log nyahpepijat dan analitik dalam pertanyaan, sebagai tambahan kepada yang biasa.
Banyak daripada parameter ini boleh digabungkan untuk mencapai pertanyaan yang tepat dan berkuasa.
Penapisan Lanjutan: Menggunakan FilterHashtable
Salah satu Kekuatan terbesar Get-WinEvent ialah keupayaannya untuk menapis acara menggunakan jadual cincang. Daripada mengambil semua acara dan kemudian menapisnya dalam langkah kedua (sesuatu yang tidak cekap), FilterHashtable Ia menggunakan penapis dalam proses pengumpulan itu sendiri, meningkatkan prestasi dan mengurangkan penggunaan sumber, terutamanya dalam log besar.
Jadual cincang dalam konteks ini terdiri daripada pasangan nilai kunci seperti @{ LogName='Application'; Id=1001; Level=2 }
Setiap pasangan akan menjadi kriteria carian. Kunci utama yang diterima termasuk:
- Nama Log (kad liar dibenarkan): rekod nama.
- Nama Pembekal (sokongan wildcard): sumber acara.
- Jalan: laluan ke fail log yang disimpan.
- Id: pengecam nombor acara.
- Tahap: tahap keterukan (Ralat=2, Amaran=3, Maklumat=4…)
- kata kunci: tapis mengikut kata kunci teknikal (jenis Long[]).
- Masa mula / Masa tamat: tapis mengikut julat tarikh.
- ID Pengguna: SID atau nama pengguna yang dikaitkan dengan acara.
- Tarikh o : data acara tersuai.
Contohnya, untuk mendapatkan peristiwa kritikal daripada vendor tertentu dalam log aplikasi dari 2 hari lalu:
$fecha = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='.NET Runtime'; Level=1; StartTime=$fecha }
Petua: Setiap kunci dalam jadual cincang mesti muncul sekali sahaja dan kad bebas hanya sah dalam LogName dan ProviderName.
Contoh penggunaan yang praktikal
Menyoal dan menganalisis log peristiwa mungkin kelihatan membosankan, tetapi dengan kepelbagaian cmdlet ini, kemungkinannya tidak berkesudahan. Berikut ialah beberapa contoh berdasarkan senario kehidupan sebenar:
- Senaraikan semua log peristiwa yang tersedia dalam sistem:
Get-WinEvent -ListLog *
- Dapatkan acara terbaharu daripada log 'Sistem':
Get-WinEvent -LogName System -MaxEvents 10
- Tapis hanya ralat aplikasi:
Get-WinEvent -FilterHashtable @{ LogName='Application'; Level=2 }
- Lihat acara yang dijana oleh pembekal:
Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='Application Error' }
- Semak peristiwa dalam log komputer lain:
Get-WinEvent -LogName System -ComputerName Servidor01
- Baca fail yang disimpan:
Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'
- Dapatkan acara untuk kata kunci tertentu:
Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* | Group-Object -Property LevelDisplayName, LogName -NoElement | Format-Table -AutoSize
Output, objek dikembalikan dan keserasian
Bergantung pada parameter yang digunakan, Dapatkan-WinEvent boleh mengembalikan objek pelbagai jenis:
- EventLogConfiguration: semasa menggunakan -Log Senarai, menyediakan konfigurasi dan sifat untuk setiap rekod.
- ProviderMetadata: dengan -Penyedia Senarai, memaparkan metadata untuk penyedia acara.
- EventLogRecord: Secara lalai, ia mewakili setiap peristiwa tertentu dan atributnya (tarikh, ID, mesej, dll.).
Ia boleh diproses dalam saluran paip dan ditapis, dikumpulkan atau dieksport ke format lain (CSV, HTML, XML, dll.). Patut diingati itu Dapatkan-WinEvent beransur-ansur menggantikan Dapatkan-EventLog, yang lebih terhad dan hanya menyokong log klasik.
Visualisasi dan analisis log lanjutan
Selain analisis acara melalui konsol atau skrip, anda boleh memeriksa log menggunakan Penonton acara daripada Windows ((https://mundobytes.com/how-to-use-windows-event-viewer-to-detect-and-anticipate-problems/)), walaupun Get-WinEvent membenarkan automasi, penyepaduan dan penggunaan jauh yang lebih baik.
Untuk menganalisis arah aliran atau isu, manfaatkan cmdlet seperti Objek Kumpulan untuk mengumpulkan acara mengikut ID, Isih-Objek untuk menyusunnya, dan Select-Objek untuk mengehadkan medan yang dipaparkan. Contohnya, untuk melihat bilangan acara bagi setiap jenis yang anda ada dalam log:
$eventos = Get-WinEvent -LogName 'Windows PowerShell'
$eventos | Group-Object -Property LevelDisplayName | Format-Table Count, Name
Penapisan XPath dan XML: Apabila Anda Memerlukan Ketepatan Maksimum
Dalam senario yang sangat kompleks mungkin berguna untuk menggunakan parameter seperti -FilterXPath y -FilterXml untuk pertanyaan lanjutan. Contohnya, untuk mencari peristiwa pada tahap dan tarikh tertentu dalam log 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
Perbandingan dengan Get-EventLog dan amalan terbaik
Walaupun Dapatkan-EventLog Ia masih wujud untuk keserasian ke belakang, tetapi keupayaannya nyata lebih rendah. Contohnya, ia hanya mengakses log klasik dan tidak membenarkan penapisan mengikut pembekal atau melalui XPath/Hashtable. Apabila PowerShell berkembang dan keperluan anda semakin meningkat, adalah idea yang baik untuk membiasakan diri anda dengannya. Dapatkan-WinEvent dan memanfaatkan penapis lanjutan dan pemprosesan acara volum tinggi dengan impak prestasi yang lebih rendah.
Beberapa cadangan berguna:
- penggunaan Dapatkan-EventLog untuk pertanyaan pantas dalam sistem atau log keselamatan.
- Sapukan Dapatkan-WinEvent untuk menapis dan menganalisis log moden, log arkib dan senario kompleks.
- Untuk mencari laluan tepat bagi log bukan klasik, mula-mula gunakan Pemapar Acara dan salin laluan untuk parameter -Nama Log.
- Elakkan membuang semua acara ke konsol: gunakan -MaxEvents untuk mengehadkan output atau penapis dengan jadual cincang.
- Apabila bekerja dengan log besar atau merentasi berbilang pasukan, automatikkan tugas dengan skrip dan saluran paip.
Pembolehubah Log PowerShell dan Penyesuaian
PowerShell membolehkan anda mengkonfigurasi jenis acara yang dilog dengan menyunting pembolehubah keutamaan seperti $LogEngineLifeCycleEvent
o $LogCommandHealthEvent
. Dengan cara ini anda boleh memutuskan sama ada untuk merekodkan butiran enjin, pembekal atau arahan dilaksanakan, melaraskan butiran mengikut keperluan anda.
Pengaktifan/penyahaktifan dilakukan seperti berikut:
$LogCommandLifeCycleEvent = $true # Para registrar inicio/fin de comandos
$LogProviderHealthEvent = $false # Para desactivar eventos de proveedor
Perubahan hanya mempengaruhi sesi semasa, melainkan ditambahkan pada profil PowerShell.
Soalan Lazim tentang Get-WinEvent dan Log Acara
- Bolehkah saya mengosongkan log peristiwa PowerShell?
Jika denganClear-EventLog -LogName "Windows PowerShell"
atau daripada Pemapar Acara (klik kanan > Log Kosong). - Di manakah fail log peristiwa disimpan?
Mereka terletak di%SystemRoot%\System32\winevt\Logs
dalam fail .evtx. - Adakah mungkin untuk memajukan log ke sistem berpusat?
Betul. Windows boleh dikonfigurasikan untuk memajukan log peristiwa ke pelayan pusat menggunakan perkhidmatan asli atau alat luaran. - Adakah Get-WinEvent berfungsi pada mana-mana versi Windows?
Ia hanya disokong pada Windows Vista dan Server 2008 R2 dan yang lebih baru. Ia tidak berfungsi pada Windows PE atau Nano Server.
Penulis yang bersemangat tentang dunia bait dan teknologi secara umum. Saya suka berkongsi pengetahuan saya melalui penulisan, dan itulah yang akan saya lakukan dalam blog ini, menunjukkan kepada anda semua perkara yang paling menarik tentang alat, perisian, perkakasan, trend teknologi dan banyak lagi. Matlamat saya adalah untuk membantu anda mengemudi dunia digital dengan cara yang mudah dan menghiburkan.