PowerShell ile Olay Günlüklerini İzleme
PowerShell'in kendisine ödünç verdiği rutin bir sistem yöneticisi görevi, verileri ve metin dosyalarını ayrıştırmaktır ve Windows olay günlükleri, Get-EventLog ve Get-WinEvent kullanılarak kolayca ayrıştırılabilen XML biçimli bilgileri kullanır. PowerShell cmdlet'leri. Bu makalede size olay günlüklerini ayrıştırmak için PowerShell'i kullanmaya nasıl başlayacağınızı göstereceğim ve olay günlüğü izlemeyi sizin için kolaylaştırmak için iki cmdlet arasındaki farkları açıklayacağım.
Get-EventLog ve Get-WinEvent karşılaştırması
Get-EventLog, olay günlükleriyle çalışmayı kolaylaştırmak için Microsoft'un Windows'a dahil ettiği ilk PowerShell cmdlet'iydi. PowerShell v2.0'dan itibaren, uzak bilgisayarlardaki günlükleri sorgulamak için de kullanılabilmesi amacıyla -BilgisayarAdı parametresi eklenmiştir. Ancak Get-EventLog'un, PowerShell sürüm 2'de Get-WinEvent'in kullanılmasına yol açan bazı sınırlamaları vardır. Get-EventLog yalnızca Sisteme karşı çalışır , Uygulama ve Güvenlik günlükleri; Windows 7'de Windows için Olay İzleme (ETW) ile sunulan ve çok daha çeşitli kaynaklardan gelen bilgileri içeren yeni ETL günlükleri (Olay İzleme Günlükleri) değil Windows NT günlerinden bu yana mevcut olan geleneksel günlüklerden daha fazla.
Get-EventLog cmdlet'i, döndürülen sonuçların doğrudan filtrelenmesine izin vermez; bu, sonuçların Where-Object cmdlet'ine aktarılarak veri kümesinin ayrıştırılması gerektiği anlamına gelir. ilave işlemler. Yalnızca yerel makinedeki günlüklerle çalışmak istiyorsanız bu çok fazla sorun olmayabilir, ancak uzak bilgisayarları sorgularken sorun haline gelebilir, çünkü günlüklerin ayrıştırılmadan önce ağ üzerinden aktarılması gerekir; Günlükler oldukça büyükse fazladan zaman alır ve gereksiz ağ trafiği oluşturur.
Bu nedenle, gerçekten bir günlüğün tüm içeriğini döndürmek istiyorsanız ve üzerinde daha fazla çalışmanıza gerek yoksa Get-EventLog kullanmak bir seçenektir ancak Get-WinEvent, Get-EventLog'un eksikliklerini gidermek için geliştirilmiştir, tüm günlükleri döndürme konusunda eşit derecede yeteneklidir ve ileriye yönelik olarak muhtemelen Microsoft'un olay günlükleriyle çalışmak için destekleyeceği cmdlet olacaktır.
PowerShell Olay Günlüğü Temelleri
Get-WinEvent'i kullanarak olay günlüğünün tüm içeriğini döndürerek başlayalım. Bir PowerShell istemi açın, aşağıdaki komut satırını yazın ve ENTER tuşuna basın.
Get-WinEvent -LogName uygulaması
Bu, Uygulama günlüğünün tüm içeriğinin CLI'ye çıktısını verecektir. Pratikte muhtemelen yalnızca en son olayları görmek isteyeceksiniz ve bunu yapmanın en kolay yolu -MaxEvents parametresini eklemektir:
Get-WinEvent -LogName uygulaması -MaxEvents 10
Yukarıdaki komut satırı Uygulama günlüğüne kaydedilen son on olayı görüntüler. ETL günlüklerini ayrıştırmak için Get-WinEvent kullanılabilir, ancak önce günlük adını bulmanız gerekir. Mevcut tüm günlükleri listelemek için şunu kullanın:
Get-WinEvent -ListLog *
Ardından istenen günlük adını arayın; örneğin, BitLocker Yönetimi günlüğü aşağıdaki komut kullanılarak döndürülebilir. Günlük adının üstünde ve sonunda boşluk bulunduğundan kesme işaretinin gerekli olduğunu unutmayın:
Get-WinEvent -LogName 'Microsoft-Windows-BitLocker/BitLocker Management' -MaxEvents 10
Ayrıca Format-List cmdlet'ini ekleyerek burada gösterildiği gibi belirli bir günlük hakkında ayrıntılı bilgi alabilirsiniz:
Get-WinEvent -ListLog 'Microsoft-Windows-BitLocker/BitLocker Yönetimi' | Format-List -Özellik *
Yukarıdaki görevlerden herhangi birini uzaktaki bir bilgisayarda gerçekleştirmek istiyorsanız, -ComputerName parametresini ve ardından bilgisayar adını eklemeniz yeterlidir:
Get-WinEvent -ListLog 'Microsoft-Windows-BitLocker/BitLocker Yönetimi' -BilgisayarAdı contososrv1 | Format-List -Özellik *
İster yerel bilgisayarda ister uzak bir cihazda olsun, istediğiniz günlüğü okumak için gerekli izinlere sahip olmanız gerektiğini unutmayın.
Ve burası hafızanızı test edebileceğiniz yerdir: doğru cevabı seçtiğinizden emin olun!
