Get-WinEvent
Yerel ve uzak bilgisayarlardaki olay günlüklerinden ve olay izleme günlük dosyalarından olayları alır.
Sözdizimi
Get-WinEvent
[[-LogName] <String[]>]
[-MaxEvents <Int64>]
[-ComputerName <String>]
[-Credential <PSCredential>]
[-FilterXPath <String>]
[-Force]
[-Oldest]
[<CommonParameters>]
Get-WinEvent
[-ListLog] <String[]>
[-ComputerName <String>]
[-Credential <PSCredential>]
[-Force]
[<CommonParameters>]
Get-WinEvent
[-ListProvider] <String[]>
[-ComputerName <String>]
[-Credential <PSCredential>]
[<CommonParameters>]
Get-WinEvent
[-ProviderName] <String[]>
[-MaxEvents <Int64>]
[-ComputerName <String>]
[-Credential <PSCredential>]
[-FilterXPath <String>]
[-Force]
[-Oldest]
[<CommonParameters>]
Get-WinEvent
[-Path] <String[]>
[-MaxEvents <Int64>]
[-Credential <PSCredential>]
[-FilterXPath <String>]
[-Oldest]
[<CommonParameters>]
Get-WinEvent
[-MaxEvents <Int64>]
[-ComputerName <String>]
[-Credential <PSCredential>]
[-FilterHashtable] <Hashtable[]>
[-Force]
[-Oldest]
[<CommonParameters>]
Get-WinEvent
[-MaxEvents <Int64>]
[-ComputerName <String>]
[-Credential <PSCredential>]
[-FilterXml] <XmlDocument>
[-Oldest]
[<CommonParameters>]
Description
Bu cmdlet yalnızca Windows platformunda kullanılabilir.
Cmdlet, Get-WinEvent
Sistem ve Uygulama günlükleri gibi klasik günlükler de dahil olmak üzere olay günlüklerinden olayları alır. Cmdlet, Windows Vista'da kullanıma sunulan Windows Olay Günlüğü teknolojisi tarafından oluşturulan olay günlüklerinden ve Windows için Olay İzleme (ETW) tarafından oluşturulan günlük dosyalarındaki olaylardan veri alır. Varsayılan olarak, Get-WinEvent
olay bilgilerini en yeniden en eskiye doğru sırasıyla döndürür.
Get-WinEvent
olay günlüklerini ve olay günlüğü sağlayıcılarını listeler. Komutu kesmek için CTRL C tuşlarına+basın. Olayları seçili günlüklerden veya seçili olay sağlayıcıları tarafından oluşturulan günlüklerden alabilirsiniz. Ayrıca, birden çok kaynaktan gelen olayları tek bir komutta birleştirebilirsiniz.
Get-WinEvent
XPath sorgularını, yapılandırılmış XML sorgularını ve karma tablo sorgularını kullanarak olayları filtrelemenizi sağlar.
PowerShell'i Yönetici olarak çalıştırmıyorsanız, günlükle ilgili bilgileri alamayacağınız hata iletileri görebilirsiniz.
Örnekler
Örnek 1: Yerel bir bilgisayardan tüm günlükleri alma
Bu komut yerel bilgisayardaki tüm olay günlüklerini alır. Günlükler, bunları alan sırayla Get-WinEvent
listelenir. Klasik günlükler önce alınır ve ardından yeni Windows Olay günlükleri alınır.
Bir günlüğün RecordCount değerinin boş veya sıfır olan null olması mümkündür.
Get-WinEvent -ListLog *
LogMode MaximumSizeInBytes RecordCount LogName
------- ------------------ ----------- -------
Circular 15532032 14500 Application
Circular 1052672 117 Azure Information Protection
Circular 1052672 3015 CxAudioSvcLog
Circular 20971520 ForwardedEvents
Circular 20971520 0 HardwareEvents
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. ListLog parametresi, her günlükle ilgili bilgileri görüntülemek için yıldız işareti (*
) joker karakterini kullanır.
Örnek 2: Klasik Kurulum günlüğünü alma
Bu komut, klasik Kurulum günlüğünü temsil eden bir EventLogConfiguration nesnesi alır. nesnesi, günlükle ilgili dosya boyutu, sağlayıcı, dosya yolu ve günlüğün etkinleştirilip etkinleştirilmediği gibi bilgileri içerir.
Get-WinEvent -ListLog Setup | Format-List -Property *
FileSize : 69632
IsLogFull : False
LastAccessTime : 3/13/2019 09:41:46
LastWriteTime : 3/13/2019 09:41:46
OldestRecordNumber : 1
RecordCount : 23
LogName : Setup
LogType : Operational
LogIsolation : Application
IsEnabled : True
IsClassicLog : False
SecurityDescriptor : O:BAG:SYD: ...
LogFilePath : %SystemRoot%\System32\Winevt\Logs\Setup.evtx
MaximumSizeInBytes : 1052672
LogMode : Circular
OwningProviderName : Microsoft-Windows-Eventlog
ProviderNames : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel :
ProviderKeywords :
ProviderBufferSize : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency : 1000
ProviderControlGuid :
Cmdlet, Get-WinEvent
Kurulum günlüğünü belirtmek için ListLog parametresini kullanır. Nesnesi işlem hattı cmdlet'ine Format-List
gönderilir. Format-List
her özelliği görüntülemek için yıldız işareti (*
) joker karakteriyle Property parametresini kullanır.
Örnek 3: Klasik Güvenlik günlüğünü yapılandırma
Bu komut, klasik Güvenlik günlüğünü temsil eden bir EventLogConfiguration nesnesi alır. Nesne daha sonra günlük için maksimum dosya boyutu, dosya yolu ve günlüğün etkinleştirilip etkinleştirilmediği gibi ayarları yapılandırmak için kullanılır.
$log = Get-WinEvent -ListLog Security
$log.MaximumSizeInBytes = 1gb
try{
$log.SaveChanges()
Get-WinEvent -ListLog Security | Format-List -Property *
}catch [System.UnauthorizedAccessException]{
$ErrMsg = 'You do not have permission to configure this log!'
$ErrMsg += ' Try running this script with administrator privileges. '
$ErrMsg += $_.Exception.Message
Write-Error $ErrMsg
}
FileSize : 69632
IsLogFull : False
LastAccessTime : 3/13/2019 09:41:46
LastWriteTime : 3/13/2019 09:41:46
OldestRecordNumber : 1
RecordCount : 23
LogName : Security
LogType : Administrative
LogIsolation : Custom
IsEnabled : True
IsClassicLog : True
SecurityDescriptor : O:BAG:SYD: ...
LogFilePath : %SystemRoot%\System32\Winevt\Logs\Security.evtx
MaximumSizeInBytes : 1073741824
LogMode : Circular
OwningProviderName :
ProviderNames : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel :
ProviderKeywords :
ProviderBufferSize : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency : 1000
ProviderControlGuid :
Cmdlet, Get-WinEvent
Güvenlik günlüğünü belirtmek için ListLog parametresini kullanır. Nesnesi bir değişkene kaydedilir. MaximumSizeInBytes özelliği nesnede 1 gigabayt olarak ayarlanır. SaveChanges yöntemi, erişim ihlallerini işlemek için bir deneme bloğunun içinde değişikliği sisteme göndermek için çağrılır. Get-WinEvent
Cmdlet, Güvenlik günlüğünde yeniden çağrılır ve MaximumSizeInBytes özelliğinin Format-List
makineye kaydedildiğini doğrulamak için cmdlet'e yöneltilir.
Örnek 4: Sunucudan olay günlüklerini alma
Bu komut yalnızca olay içeren yerel bilgisayarda olay günlüklerini alır. Bir günlüğün RecordCount değerinin null veya sıfır olması mümkündür. Örnekte değişkeni kullanılır $_
. Daha fazla bilgi için bkz . about_Automatic_Variables.
Get-WinEvent -ListLog * -ComputerName localhost | Where-Object { $_.RecordCount }
LogMode MaximumSizeInBytes RecordCount LogName
------- ------------------ ----------- -------
Circular 15532032 14546 Application
Circular 1052672 117 Azure Information Protection
Circular 1052672 2990 CxAudioSvcLog
Circular 1052672 9 MSFTVPN Setup
Circular 1052672 282 OAlerts
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. ListLog parametresi, her günlükle ilgili bilgileri görüntülemek için yıldız işareti (*
) joker karakterini kullanır. ComputerName parametresi, günlüklerin yerel bilgisayar olan localhost'tan alınıyor olduğunu belirtir. Nesneler işlem hattına cmdlet'ine Where-Object
gönderilir. Where-Object
yalnızca veri içeren günlükleri döndürmek için kullanır $_.RecordCount
. $_
, işlem hattındaki geçerli nesneyi temsil eden bir değişkendir. RecordCount , null olmayan bir değere sahip nesnenin özelliğidir.
Örnek 5: Birden çok sunucudan olay günlüklerini alma
Bu örnek, üç bilgisayarda Uygulama olay günlüklerini temsil eden nesneleri alır: Server01, Server02 ve Server03. ComputerName parametresi yalnızca bir değer kabul ettiğinden ForEach anahtar sözcüğü kullanılır. Daha fazla bilgi için bkz . about_Foreach.
$S = 'Server01', 'Server02', 'Server03'
ForEach ($Server in $S) {
Get-WinEvent -ListLog Application -ComputerName $Server |
Select-Object LogMode, MaximumSizeInBytes, RecordCount, LogName,
@{name='ComputerName'; expression={$Server}} |
Format-Table -AutoSize
}
LogMode MaximumSizeInBytes RecordCount LogName ComputerName
------- ------------------ ----------- ------- ------------
Circular 15532032 14577 Application Server01
Circular 15532032 9689 Application Server02
Circular 15532032 5309 Application Server03
değişkeni $S
üç sunucu adını depolar: Server01, Server02 ve Server03. ForEach deyimi, ($Server in $S)
her sunucuyu işlemek için bir döngü kullanır. Küme ayraçlarındaki ({ }
) betik bloğu komutunu çalıştırır Get-WinEvent
. ListLog parametresi Uygulama günlüğünü belirtir. ComputerName parametresi, her sunucudan günlük bilgilerini almak için değişkenini $Server
kullanır.
Nesneler işlem hattına cmdlet'ine Select-Object
gönderilir. Select-Object
LogMode, MaximumSizeInBytes, RecordCount, LogName özelliklerini alır ve değişkenini $Server
kullanarak ComputerName'i görüntülemek için hesaplanan bir ifade kullanır. Nesneler, çıkışı PowerShell konsolunda Format-Table
görüntülemek için işlem hattı cmdlet'ine gönderilir. AutoSize parametresi çıkışı ekrana sığacak şekilde biçimlendirır.
Örnek 6: Olay günlüğü sağlayıcılarını ve günlük adlarını alma
Bu komut, olay günlüğü sağlayıcılarını ve yazdıkları günlükleri alır.
Get-WinEvent -ListProvider *
Name : .NET Runtime
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Name : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes : {}
Tasks : {}
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. ListProvider parametresi, her sağlayıcı hakkındaki bilgileri görüntülemek için yıldız işareti (*
) joker karakterini kullanır. Çıktıda Ad sağlayıcı, LogLinks ise sağlayıcının yazdığı günlük.
Örnek 7: Belirli bir günlüğe yazan tüm olay günlüğü sağlayıcılarını alma
Bu komut, Uygulama günlüğüne yazan tüm sağlayıcıları alır.
(Get-WinEvent -ListLog Application).ProviderNames
.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. ListLog parametresi, bu günlük için nesneleri almak için Application kullanır. ProviderNames nesnesinin bir özelliğidir ve Uygulama günlüğüne yazan sağlayıcıları görüntüler.
Örnek 8: Belirli bir dize içeren olay günlüğü sağlayıcısı adlarını alma
Bu komut, sağlayıcının adına belirli bir dize içeren adlara sahip olay günlüğü sağlayıcılarını alır.
Get-WinEvent -ListProvider *Policy*
Name : Group Policy Applications
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Name : Group Policy Client
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Name : Group Policy Data Sources
LogLinks : {Application}
Opcodes : {}
Tasks : {}
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. ListProvider parametresi, sağlayıcı adının herhangi bir yerinde İlke'yi bulmak için yıldız işareti (*
) joker karakterini kullanır.
Örnek 9: Olay sağlayıcısının oluşturduğu Olay Kimliklerini alma
Bu komut, Microsoft-Windows-GroupPolicy olay sağlayıcısının oluşturduğu Olay Kimliklerini olay açıklamasıyla birlikte listeler.
(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table Id, Description
Id Description
-- -----------
1500 The Group Policy settings for the computer were processed successfully...
1501 The Group Policy settings for the user were processed successfully...
4115 Group Policy Service started.
4116 Started the Group Policy service initialization phase.
4117 Group Policy Session started.
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. ListProvider parametresi, Microsoft-Windows-GroupPolicy sağlayıcısını belirtir. İfade parantez içinde sarmalanır ve nesneleri almak için Events özelliğini kullanır. Nesneler işlem hattına cmdlet'ine Format-Table
gönderilir. Format-Table
, olay nesnelerinin kimliğini ve Açıklamasını görüntüler.
Örnek 10: Olay nesnesi özelliklerinden günlük bilgilerini alma
Bu örnekte, olay nesnesi özelliklerini kullanarak bir günlüğün içeriği hakkında bilgi alma işlemi gösterilmektedir. Olay nesneleri bir değişkende depolanır ve ardından Olay Kimliği ve Düzeyine göre gruplandırılır ve sayılır.
$Event = Get-WinEvent -LogName 'Windows PowerShell'
$Event.Count
$Event | Group-Object -Property Id -NoElement | Sort-Object -Property Count -Descending
$Event | Group-Object -Property LevelDisplayName -NoElement
195
Count Name
----- ----
147 600
22 400
21 601
3 403
2 103
Count Name
----- ----
2 Warning
193 Information
Cmdlet, Get-WinEvent
Windows PowerShell olay günlüğünü belirtmek için LogName parametresini kullanır. Olay nesneleri değişkeninde $Event
depolanır. değerinin $Event
Count özelliği, günlüğe kaydedilen olayların toplam sayısını gösterir.
değişkeni $Event
işlem hattına cmdlet'ine Group-Object
gönderilir. Group-Object
Id özelliğini belirtmek için Property parametresini kullanır ve nesneleri olay kimliği değerine göre sayar. NoElement parametresi, nesne çıkışından diğer özellikleri kaldırır. Gruplandırılmış nesneler işlem hattına cmdlet'ine Sort-Object
gönderilir. Sort-Object
Nesneleri Sayıya göre sıralamak için Property parametresini kullanır. Descending parametresi, çıktıyı en yüksekten en düşüğe doğru sayıya göre görüntüler. Çıkışta Count sütunu her olayın toplam sayısını içerir. Ad sütunu gruplandırılmış olay kimliği numaralarını içerir.
değişkeni $Event
işlem hattına cmdlet'ine Group-Object
gönderilir. Group-Object
, LevelDisplayName özelliğini belirtmek için Property parametresini kullanır ve nesneleri LevelDisplayName ile sayar. Nesneler Uyarı ve Bilgi gibi düzeylere göre gruplandırılır.
NoElement parametresi çıkıştan diğer özellikleri kaldırır. Çıkışta Count sütunu her olayın toplam sayısını içerir. Ad sütunu, gruplandırılmış LevelDisplayName değerini içerir.
Örnek 11: Adında belirtilen dize bulunan hata olaylarını alma
Bu örnekte, virgülle ayrılmış günlük adları dizesi kullanılır. Çıkış, hata veya uyarı ve günlük adı gibi düzeye göre gruplandırılır.
Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* |
Group-Object -Property LevelDisplayName, LogName -NoElement |
Format-Table -AutoSize
Count Name
----- ----
1 Error, PowerShellCore/Operational
26 Information, Microsoft-Windows-Kernel-WHEA/Operational
488 Information, Microsoft-Windows-PowerShell/Operational
77 Information, PowerShellCore/Operational
9835 Information, Windows PowerShell
19 Verbose, PowerShellCore/Operational
444 Warning, Microsoft-Windows-PowerShell/Operational
512 Warning, PowerShellCore/Operational
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. LogName parametresi, günlük adlarını belirtmek için yıldız işareti (*
) joker karakteriyle virgülle ayrılmış bir dize kullanır. Nesneler işlem hattına cmdlet'ine Group-Object
gönderilir. Group-Object
Nesneleri LevelDisplayName ve LogName'e göre gruplandırmak için Property parametresini kullanır. NoElement parametresi çıkıştan diğer özellikleri kaldırır. Gruplandırılmış nesneler işlem hattına cmdlet'ine Format-Table
gönderilir. Format-Table
sütunları biçimlendirmek için AutoSize parametresini kullanır. Count sütunu her olayın toplam sayısını içerir. Ad sütunu, gruplandırılmış LevelDisplayName ve LogName'i içerir.
Örnek 12: Arşivlenmiş olay günlüğünden olay alma
Get-WinEvent
kaydedilen günlük dosyalarından olay bilgilerini alabilir. Bu örnek, yerel bilgisayarda depolanan arşivlenmiş bir PowerShell günlüğü kullanır.
Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'
ProviderName: PowerShell
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
3/15/2019 13:54:13 403 Information Engine state is changed from Available to Stopped...
3/15/2019 13:54:13 400 Information Engine state is changed from None to Available...
3/15/2019 13:54:13 600 Information Provider "Variable" is Started...
3/15/2019 13:54:13 600 Information Provider "Function" is Started...
3/15/2019 13:54:13 600 Information Provider "FileSystem" is Started...
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. Path parametresi dizin ve dosya adını belirtir.
Örnek 13: Arşivlenmiş bir olay günlüğünden belirli sayıda olay alma
Bu komutlar arşivlenmiş bir olay günlüğünden belirli sayıda olay alır. Get-WinEvent
en fazla sayıda olay veya en eski olayları alabilen parametrelere sahiptir. Bu örnek, C:\Test\PowerShellCore Operational.evtx içinde depolanan arşivlenmiş bir PowerShell günlüğü kullanır.
Get-WinEvent -Path 'C:\Test\PowerShellCore Operational.evtx' -MaxEvents 100
ProviderName: PowerShellCore
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
3/15/2019 09:54:54 4104 Warning Creating Scriptblock text (1 of 1):...
3/15/2019 09:37:13 40962 Information PowerShell console is ready for user input
3/15/2019 07:56:24 4104 Warning Creating Scriptblock text (1 of 1):...
...
3/7/2019 10:53:22 40961 Information PowerShell console is starting up
3/7/2019 10:53:22 8197 Verbose Runspace state changed to Opening
3/7/2019 10:53:22 8195 Verbose Opening RunspacePool
cmdlet'i Get-WinEvent
bilgisayardan günlük bilgilerini alır. Path parametresi dizini ve dosya adını belirtir. MaxEvents parametresi, en yeniden en eskiye kadar 100 kaydın görüntüleneceğini belirtir.
Örnek 14: Windows için Olay İzleme
Windows için Olay İzleme (ETW), olaylar gerçekleştikçe olayları günlüğe yazar. Olaylar en eskiden en yeniye sırasıyla depolanır. Arşivlenen ETW dosyası TraceLog.etl gibi bir .etl
dosya olarak kaydedilir.
Olaylar günlüğe yazıldıkları sırayla listelenir, bu nedenle En Eski parametresi gereklidir.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
Sort-Object -Property TimeCreated -Descending |
Select-Object -First 100
Get-WinEvent
Cmdlet, arşivlenen dosyadan günlük bilgilerini alır. Path parametresi dizin ve dosya adını belirtir. En Eski parametresi, olayların yazıldıkları sırayla, en eskiden en yeniye çıktısını almak için kullanılır. Nesneler işlem hattına cmdlet'ine Sort-Object
Sort-Object
gönderilir ve nesneleri TimeCreated özelliğinin değerine göre azalan düzende sıralar. Nesneler, işlem hattını Select-Object
en yeni 100 olayı görüntüleyen cmdlet'ine gönderilir.
Örnek 15: Olay izleme günlüğünden olay alma
Bu örnekte, bir olay izleme günlük dosyasından (.etl
) ve arşivlenmiş bir Windows PowerShell günlük dosyasından () olayların nasıl alınacakları gösterilmektedir.evtx
. Birden çok dosya türünü tek bir komutta birleştirebilirsiniz.
Dosyalar aynı türde .NET Framework nesnesi (EventLogRecord) içerdiğinden, bunları aynı özelliklerle filtreleyebilirsiniz. Komut, bir .etl
dosyadan okuduğu için En Eski parametresini gerektirir, ancak Her dosya için En Eski parametresi geçerlidir.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
Where-Object { $_.Id -eq '403' }
Get-WinEvent
Cmdlet arşivlenen dosyalardan günlük bilgilerini alır. Path parametresi, her dosya dizinini ve dosya adını belirtmek için virgülle ayrılmış bir liste kullanır. En Eski parametresi, olayların yazıldıkları sırayla, en eskiden en yeniye çıktısını almak için kullanılır. Nesneler işlem hattına cmdlet'ine Where-Object
gönderilir. Where-Object
403 kimliğine sahip olayları bulmak için bir betik bloğu kullanır. $_
değişkeni işlem hattındaki geçerli nesneyi temsil eder ve Kimlik ise Olay Kimliği özelliğidir.
Örnek 16: Olay günlüğü sonuçlarını filtreleme
Bu örnekte, bir olay günlüğünden olayları filtrelemek ve seçmek için çeşitli yöntemler gösterilmektedir. Bu komutların tümü, Windows PowerShell olay günlüğünden son 24 saat içinde gerçekleşen olayları alır.
Filtre yöntemleri, cmdlet'ini Where-Object
kullanmaktan daha verimlidir. Nesneler alınırken filtreler uygulanır. Where-Object
tüm nesneleri alır, ardından tüm nesnelere filtreler uygular.
# Using the Where-Object cmdlet:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -LogName 'Windows PowerShell' | Where-Object { $_.TimeCreated -ge $Yesterday }
# Using the FilterHashtable parameter:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -FilterHashtable @{ LogName='Windows PowerShell'; Level=3; StartTime=$Yesterday }
# Using the FilterXML parameter:
$xmlQuery = @'
<QueryList>
<Query Id="0" Path="Windows PowerShell">
<Select Path="System">*[System[(Level=3) and
TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select>
</Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery
# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]'
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath $XPath
Örnek 17: Uygulama günlüğünden olay almak için FilterHashtable kullanma
Bu örnekte, Uygulama günlüğünden olayları almak için FilterHashtable parametresi kullanılır. Karma tablo anahtar/değer çiftlerini kullanır. FilterHashtable parametresi hakkında daha fazla bilgi için bkz. FilterHashtable ile Get-WinEvent sorguları oluşturma. Karma tabloları hakkında daha fazla bilgi için bkz. about_Hash_Tables.
$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }
Cmdlet, Get-Date
geçerli tarihten iki gün önceki bir tarihi almak için AddDays yöntemini kullanır. date nesnesi değişkeninde $Date
depolanır.
Get-WinEvent
Cmdlet günlük bilgilerini alır. FilterHashtable parametresi çıkışı filtrelemek için kullanılır. LogName anahtarı değeri Uygulama günlüğü olarak belirtir. StartTime anahtarı değişkeninde $Date
depolanan değeri kullanır. Kimlik anahtarı 1003 adlı bir Olay Kimliği değeri kullanır.
Örnek 18: Uygulama hatalarını almak için FilterHashtable kullanma
Bu örnekte, geçen hafta içinde oluşan Internet Explorer uygulama hatalarını bulmak için FilterHashtable parametresi kullanılır.
$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
Logname='Application'
ProviderName='Application Error'
Data='iexplore.exe'
StartTime=$StartTime
}
cmdlet'iGet-Date
, geçerli tarihten yedi gün önceki bir tarihi almak için AddDays yöntemini kullanır. date nesnesi değişkeninde $StartTime
depolanır.
Get-WinEvent
Cmdlet günlük bilgilerini alır. FilterHashtable parametresi çıkışı filtrelemek için kullanılır. LogName anahtarı değeri Uygulama günlüğü olarak belirtir. ProviderName anahtarı, olayın Kaynağı olan Uygulama Hatası değerini kullanır. Veri anahtarı değeri iexplore.exe StartTime anahtarı değişkende $StartTime
depolanan değeri kullanır.
Örnek 19: Uygulama hatalarını filtrelemek için SuppressHashFilter kullanma
Yukarıdaki Örnek 16'da olduğu gibi, bu örnekte de Application günlüğünden olay almak için FilterHashtable parametresi kullanılır. Ancak Bilgi düzeyi olaylarını filtrelemek için SuppressHashFilter anahtarını ekleyeceğiz.
$Date = (Get-Date).AddDays(-2)
$filter = @{
LogName='Application'
StartTime=$Date
SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter
Bu örnekte, Get-WinEvent
4 Düzeyi (Bilgi) olanlar dışında son iki gün için Uygulama günlüğünden tüm olayları alır.
Parametreler
-ComputerName
Bu cmdlet'in olay günlüklerinden olay aldığı bilgisayarın adını belirtir. NetBIOS adını, IP adresini veya bilgisayarın tam etki alanı adını (FQDN) yazın. Varsayılan değer localhost yerel bilgisayarıdır. Bu parametre aynı anda yalnızca bir bilgisayar adını kabul eder.
Uzak bilgisayarlardan olay günlüklerini almak için, olay günlüğü hizmetinin güvenlik duvarı bağlantı noktasını uzaktan erişime izin verecek şekilde yapılandırın.
Bu cmdlet PowerShell uzaktan iletişimini kullanmaz. Bilgisayarınız uzak komutları çalıştıracak şekilde yapılandırılmamış olsa bile ComputerName parametresini kullanabilirsiniz.
Tür: | String |
Diğer adlar: | Cn |
Position: | Named |
Default value: | Local computer |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Credential
Bu eylemi gerçekleştirme iznine sahip bir kullanıcı hesabı belirtir. Varsayılan değer geçerli kullanıcıdır.
User01 veya Domain01\User01 gibi bir kullanıcı adı yazın. Alternatif olarak, cmdlet'i tarafından Get-Credential
oluşturulan nesne gibi bir PSCredential nesnesi de girin. Bir kullanıcı adı yazarsanız parola girmeniz istenir. Yalnızca parametre adını yazarsanız, sizden hem kullanıcı adı hem de parola istenir.
Tür: | PSCredential |
Position: | Named |
Default value: | Current user |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-FilterHashtable
Bir veya daha fazla olay günlüğünden olayları seçmek için karma tablo biçiminde bir sorgu belirtir. Sorgu, bir veya daha fazla anahtar/değer çifti içeren bir karma tablo içeriyor.
Karma tablo sorguları aşağıdaki kurallara sahiptir:
- Anahtarlar ve değerler büyük/küçük harfe duyarlı değildir.
- Joker karakterler yalnızca LogName ve ProviderName anahtarlarıyla ilişkili değerlerde geçerlidir.
- Her anahtar, her karma tabloda yalnızca bir kez listelenebilir.
- Yol değeri ,
.evt
ve.evtx
günlük dosyalarının.etl
yollarını alır. - LogName, Path ve ProviderName anahtarları aynı sorguda kullanılabilir.
- UserID anahtarı geçerli bir güvenlik tanımlayıcısı (SID) veya geçerli bir System.Security.Principal.NTAccount nesnesi oluşturmak için kullanılabilecek bir etki alanı hesabı adı alabilir.
- Veri değeri, adsız bir alanda olay verilerini alır. Örneğin, klasik olay günlüklerindeki olaylar.
<named-data>
anahtar, adlandırılmış bir olay veri alanını temsil eder.
Anahtar/değer çiftini yorumlayamadığındaGet-WinEvent
, anahtarı olaydaki olay verileri için büyük/küçük harfe duyarlı bir ad olarak yorumlar.
Geçerli Get-WinEvent
anahtar/değer çiftleri aşağıdaki gibidir:
- LogName=
<String[]>
- ProviderName=
<String[]>
- Yol=
<String[]>
- Anahtar Sözcükler=
<Long[]>
- Kimlik=
<Int32[]>
- Düzey=
<Int32[]>
- StartTime=
<DateTime>
- EndTime=
<DateTime>
- UserID=
<SID>
- Veri=
<String[]>
<named-data>
=<String[]>
- SuppressHashFilter=
<Hashtable>
Tür: | Hashtable[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-FilterXml
Bu cmdlet'in bir veya daha fazla olay günlüğünden olayları seçtiği yapılandırılmış bir XML sorgusu belirtir.
Geçerli bir XML sorgusu oluşturmak için Windows Olay Görüntüleyicisi'da Özel Görünüm Oluştur ve Geçerli Günlüğü Filtrele özelliklerini kullanın. Sorgu oluşturmak için iletişim kutusundaki öğeleri kullanın ve ardından XML sekmesine tıklayarak sorguyu XML biçiminde görüntüleyin. XML sekmesinin XML değerini FilterXml parametresinin değerine kopyalayabilirsiniz. Olay Görüntüleyicisi özellikleri hakkında daha fazla bilgi için yardım Olay Görüntüleyicisi bakın.
Birkaç XPath deyimi içeren karmaşık bir sorgu oluşturmak için XML sorgusu kullanın. XML biçimi ayrıca, olayları sorgunun dışında tutan bir XML gösterme öğesi kullanmanıza da olanak tanır. Olay günlüğü sorguları için XML şeması hakkında daha fazla bilgi için Bkz. Sorgu Şeması ve Olay Seçimi'nin XML Olay Sorguları bölümü.
FilterHashtable parametresini kullanarak bir Suppress öğesi de oluşturabilirsiniz.
Tür: | XmlDocument |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-FilterXPath
Bu cmdlet'in bir veya daha fazla günlükten olay seçtiği bir XPath sorgusu belirtir.
XPath dili hakkında daha fazla bilgi için bkz. XPath Başvurusu ve Olay Seçimi'nin Seçim Filtreleri bölümü.
Tür: | String |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Force
Diğer olay günlüklerine ek olarak hata ayıklama ve analiz günlüklerini alır. Ad parametresinin değeri joker karakter içerdiğinde hata ayıklama veya analiz günlüğü almak için Force parametresi gereklidir.
Varsayılan olarak, hata ayıklama veya analiz günlüğünün Get-WinEvent
tam adını belirtmediğiniz sürece cmdlet bu günlükleri dışlar.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ListLog
Olay günlüklerini belirtir. Olay günlüğü adlarını virgülle ayrılmış bir listeye girin. Joker karakterlere izin verilir. Tüm günlükleri almak için yıldız işareti (*
) joker karakterini kullanın.
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | True |
-ListProvider
Bu cmdlet'in aldığı olay günlüğü sağlayıcılarını belirtir. Olay günlüğü sağlayıcısı, olay günlüğüne olay yazan bir program veya hizmettir.
Sağlayıcı adlarını virgülle ayrılmış bir listeye girin. Joker karakterlere izin verilir. Bilgisayardaki tüm olay günlüklerinin sağlayıcılarını almak için yıldız (*
) joker karakterini kullanın.
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | True |
-LogName
Bu cmdlet'in olayları almak için olay günlüklerini belirtir. Olay günlüğü adlarını virgülle ayrılmış bir listeye girin. Joker karakterlere izin verilir. Günlük adlarını cmdlet'ine Get-WinEvent
de yöneltebilirsiniz.
Not
PowerShell, isteyebileceğiniz günlük miktarını sınırlamaz. Get-WinEvent
Ancak, cmdlet 256 sınırı olan Windows API'sini sorgular. Bu, tüm günlüklerinizi tek seferde filtrelemeyi zorlaştırabilir. Aşağıdaki gibi her günlükte yinelemek için bir döngü kullanarak bu sorunu geçici olarak foreach
düzeltebilirsiniz: Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-MaxEvents
Döndürülen en fazla olay sayısını belirtir. 100 gibi bir tamsayı girin. Varsayılan değer, günlüklerdeki veya dosyalardaki tüm olayları döndürmektir.
Tür: | Int64 |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Oldest
Bu cmdlet'in olayları en eski ilk sırada aldığını belirtin. Varsayılan olarak, olaylar en yeni ilk sırada döndürülür.
Bu parametre, ve dosyalarından .etl
ve .evt
hata ayıklama ve analiz günlüklerinden olay almak için gereklidir. Bu dosyalarda olaylar en eski ilk sırada kaydedilir ve olaylar yalnızca en eski ilk sırada döndürülebilir.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Path
Bu cmdlet'in olayları almak için olay günlüğü dosyalarının yolunu belirtir. Günlük dosyalarının yollarını virgülle ayrılmış bir listeye girin veya dosya yolu desenleri oluşturmak için joker karakterler kullanın.
Get-WinEvent
, .evtx
ve .etl
dosya adı uzantılarına .evt
sahip dosyaları destekler. Aynı komuta farklı dosyalardan ve dosya türlerinden olaylar ekleyebilirsiniz.
Tür: | String[] |
Diğer adlar: | PSPath |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-ProviderName
Dize dizisi olarak, bu cmdlet'in olayları aldığı olay günlüğü sağlayıcılarını belirtir. Sağlayıcı adlarını virgülle ayrılmış bir listeye girin veya sağlayıcı adı desenleri oluşturmak için joker karakterler kullanın.
Olay günlüğü sağlayıcısı, olay günlüğüne olay yazan bir program veya hizmettir. Bu bir PowerShell sağlayıcısı değildir.
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
Girişler
Bu cmdlet'e bir LogName (dize) kanal oluşturabilirsiniz.
Bir FilterXML sorgusunu bu cmdlet'e yöneltebilirsiniz.
FilterHashtable sorgusunu bu cmdlet'e yöneltebilirsiniz.
Çıkışlar
ListLog parametresiyle bu cmdlet EventLogConfiguration nesnelerini döndürür.
Varsayılan olarak, bu cmdlet EventLogRecord nesnelerini döndürür.
ListProvider parametresiyle, bu cmdlet ProviderMetadata nesnelerini döndürür.
Notlar
Get-WinEvent
, Windows Vista ve Windows'un sonraki sürümlerini çalıştıran bilgisayarlarda cmdlet'ini değiştirmek Get-EventLog
için tasarlanmıştır. Get-EventLog
yalnızca klasik olay günlüklerindeki olayları alır. Get-EventLog
geriye dönük uyumluluk için korunur.
ve Get-EventLog
cmdlet'leri Get-WinEvent
Windows Yükleme Öncesi Ortamı'nda (Windows PE) desteklenmez.
İlişkili Bağlantılar
PowerShell