Aracılığıyla paylaş


Get-WinEvent

Yerel ve uzak bilgisayarlardaki olay günlüklerinden ve olay izleme günlük dosyalarından olayları alır.

Syntax

GetLogSet (Varsayılan)

Get-WinEvent
    [[-LogName] <String[]>]
    [-MaxEvents <Int64>]
    [-ComputerName <String>]
    [-Credential <PSCredential>]
    [-FilterXPath <String>]
    [-Force]
    [-Oldest]
    [<CommonParameters>]

ListLogSet

Get-WinEvent
    [-ListLog] <String[]>
    [-ComputerName <String>]
    [-Credential <PSCredential>]
    [-Force]
    [<CommonParameters>]

ListProviderSet

Get-WinEvent
    [-ListProvider] <String[]>
    [-ComputerName <String>]
    [-Credential <PSCredential>]
    [<CommonParameters>]

GetProviderSet

Get-WinEvent
    [-ProviderName] <String[]>
    [-MaxEvents <Int64>]
    [-ComputerName <String>]
    [-Credential <PSCredential>]
    [-FilterXPath <String>]
    [-Force]
    [-Oldest]
    [<CommonParameters>]

FileSet

Get-WinEvent
    [-Path] <String[]>
    [-MaxEvents <Int64>]
    [-Credential <PSCredential>]
    [-FilterXPath <String>]
    [-Oldest]
    [<CommonParameters>]

HashQuerySet

Get-WinEvent
    [-FilterHashtable] <Hashtable[]>
    [-MaxEvents <Int64>]
    [-ComputerName <String>]
    [-Credential <PSCredential>]
    [-Force]
    [-Oldest]
    [<CommonParameters>]

XmlQuerySet

Get-WinEvent
    [-FilterXml] <XmlDocument>
    [-MaxEvents <Int64>]
    [-ComputerName <String>]
    [-Credential <PSCredential>]
    [-Oldest]
    [<CommonParameters>]

Description

Bu cmdlet yalnızca Windows platformunda kullanılabilir.

Get-WinEvent cmdlet'i, System ve Application 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+Ctuş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 alamadığı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, Get-WinEvent bunları aldığı sırayla 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 boş veya sıfır olan null olabilir.

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

Get-WinEvent cmdlet'i 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            :

Get-WinEvent cmdlet'i, Kurulumu günlüğünü belirtmek için ListLog parametresini kullanır. Nesnesi, işlem hattı Format-List cmdlet'ine gönderilir. Format-List, her özelliği görüntülemek için yıldız işareti () joker karakteriyle * 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 don't 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. Günlüğün RecordCount null veya sıfır olabilir. Ö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

Get-WinEvent cmdlet'i 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, yerel bilgisayardan günlüklerin alın localhostbelirtir. Nesneler işlem hattına Where-Object cmdlet'ine gönderilir. Where-Object yalnızca veri içeren günlükleri döndürmek için $_.RecordCount kullanır. $_, işlem hattındaki geçerli nesneyi temsil eden bir değişkendir. RecordCount, nesnenin null olmayan bir değere sahip bir ö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. foreach parametresi yalnızca bir değer kabul ettiğinden 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

$S değişkeni üç sunucu adını depolar: Server01, Server02ve Server03. foreach deyimi, ($Server in $S)her sunucuyu işlemek için bir döngü kullanır. deyimi foreach bloğu komutunu Get-WinEvent çalıştırır. ListLog parametresi, Uygulama günlüğünü belirtir. ComputerName parametresi, her sunucudan günlük bilgilerini almak için $Server değişkenini kullanır.

Nesneler işlem hattına Select-Object cmdlet'ine gönderilir. LogMode, MaximumSizeInBytes, RecordCount, LogNameözelliklerini alır ve değişkenini kullanarak ComputerName görüntülemek için hesaplanan bir ifade kullanır. Nesneler, çıkışı PowerShell konsolunda görüntülemek için işlem hattı Format-Table cmdlet'ine gönderilir. Otomatik Boyutlandır parametresi çıkışı ekrana sığacak şekilde biçimlendirmektedir.

Ö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    : {}

Get-WinEvent cmdlet'i 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ıdır ve LogLinks sağlayıcının yazdığı günlükdür.

Ö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

Get-WinEvent cmdlet'i bilgisayardan günlük bilgilerini alır. ListLog parametresi, söz diziminin nesnelerini 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    : {}

Get-WinEvent cmdlet'i bilgisayardan günlük bilgilerini alır. ListProvider parametresi, sağlayıcı adının herhangi bir yerinde * 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 olay açıklamasıyla birlikte oluşturduğu Olay Kimliklerini 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.

Get-WinEvent cmdlet'i bilgisayardan günlük bilgilerini alır. ListProvider parametresi, Microsoft-Windows-GroupPolicysağlayıcıyı belirtir. İfade parantez içinde sarmalanır ve nesneleri almak için Olaylar özelliğini kullanır. Nesneler işlem hattına Format-Table cmdlet'ine gönderilir. Format-Table, olay nesnelerinin Kimliği ve Açıklama 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 Olay Kimliği ve Düzeyigö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

Get-WinEvent cmdlet'i, Windows PowerShell olay günlüğünü belirtmek için LogName parametresini kullanır. Olay nesneleri $Event değişkeninde depolanır. özelliği, günlüğe kaydedilen olayların toplam sayısını gösterir.

$Event değişkeni, işlem hattından Group-Object cmdlet'ine 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 Sort-Object cmdlet'ine gönderilir. Sort-Object, nesneleri Countgöre sıralamak için Özelliği parametresini kullanır. Azalan parametresi, çıktıyı en yüksekten en düşüğe doğru sayıya göre görüntüler. Çıktıda, Sayısı sütunu her olayın toplam sayısını içerir. Ad sütunu gruplandırılmış olay kimliği numaralarını içerir.

$Event değişkeni, işlem hattından Group-Object cmdlet'ine gönderilir. Group-Object, LevelDisplayName özelliğini belirtmek için Özelliği parametresini kullanır ve LevelDisplayNametarafından nesneleri sayar. Nesneler, Uyarı ve Bilgilerigibi düzeylere göre gruplandırılır. NoElement parametresi çıkıştan diğer özellikleri kaldırır. Çıktıda, Sayısı sütunu her olayın toplam sayısını içerir. Adı sütunu, LevelDisplayNamegruplandırılan öğesini 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

Get-WinEvent cmdlet'i 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 Group-Object cmdlet'ine gönderilir. Group-Object, nesneleri LevelDisplayName ve LogNamegöre gruplandırmak için Özelliği parametresini kullanır. NoElement parametresi çıkıştan diğer özellikleri kaldırır. Gruplandırılmış nesneler işlem hattına Format-Table cmdlet'ine gönderilir. Format-Table, sütunları biçimlendirmek için Otomatik Boyutlandırma parametresini kullanır. Sayısı sütunu her olayın toplam sayısını içerir. Adı sütunu, LevelDisplayName ve LogNameiç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...

Get-WinEvent cmdlet'i 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

Get-WinEvent cmdlet'i 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ı, .etlgibi bir 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'i 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ını Sort-Object cmdlet'ine gönderilir Sort-Object nesneleri TimeCreated özelliğinin değerine göre azalan düzende sıralar. Nesneler, işlem hattından en yeni 100 olayı görüntüleyen Select-Object 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 (.evtx) olayların nasıl alınacakları gösterilmektedir. Birden çok dosya türünü tek bir komutta birleştirebilirsiniz. Dosyalar aynı türde .NET Framework nesnesi içerdiğinden EventLogRecordbunları aynı özelliklerle filtreleyebilirsiniz. Komut, bir dosyadan okuduğu için .etl parametresini gerektirir, ancak En Eski parametresi her dosya için geçerlidir.

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
  Where-Object { $_.Id -eq '403' }

Get-WinEvent cmdlet'i 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 Where-Object cmdlet'ine gönderilir. Where-Object 403kimliğ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 Kimliği 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. Tüm bu komutlar , Windows PowerShell olay günlüğünden son 24 saat içinde gerçekleşen olayları alır. Filtre yöntemleri, Where-Object cmdlet'ini kullanmaktan daha verimlidir. Nesneler alınırken filtreler uygulanır. Where-Object tüm nesneleri alır ve 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, Application günlüğünden olay 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. FilterHashtableile 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 $Date değişkeninde depolanır.

Get-WinEvent cmdlet'i günlük bilgilerini alır. Çıktıyı filtrelemek için FilterHashtable parametresi kullanılır. LogName anahtarı değeri Uygulama günlüğü olarak belirtir. StartTime anahtarı, $Date değişkeninde depolanan değeri kullanır. Kimliği anahtarı, 1003bir 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, Get-Date geçerli tarihten yedi gün önceki bir tarihi almak için AddDays yöntemini kullanır. date nesnesi $StartTime değişkeninde depolanır.

Get-WinEvent cmdlet'i günlük bilgilerini alır. Çıktıyı filtrelemek için FilterHashtable parametresi kullanılır. LogName anahtarı değeri Uygulama günlüğü olarak belirtir. ProviderName anahtarı, olayın Kaynakolan Uygulama Hatasıdeğerini kullanır. Veri anahtarı iexplore.exe değerini kullanır StartTime anahtarı $StartTime değişkeninde 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 localhostyerel bilgisayardı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.

Parametre özellikleri

Tür:String
Default value:Local computer
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Cn

Parametre kümeleri

GetLogSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
ListLogSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
ListProviderSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
GetProviderSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
HashQuerySet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
XmlQuerySet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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\User01gibi bir kullanıcı adı yazın. Alternatif olarak, cmdlet'i tarafından oluşturulan nesne gibi Get-Credential 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.

Parametre özellikleri

Tür:PSCredential
Default value:Current user
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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çerir.

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, .etl, .evtve .evtx günlük dosyalarının yollarını alır.
  • LogName, Pathve 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.

AnahtarGet-WinEvent çiftini yorumlayamıyorsa, anahtarı olaydaki olay verileri için büyük/küçük harfe duyarlı bir ad olarak yorumlar.

Geçerli Get-WinEventanahtarı/değer çiftleri aşağıdaki gibidir:

  • LogName
  • SağlayıcıAdı=<String[]>
  • Yol=<String[]>
  • Anahtar Sözcükler=<Long[]>
  • Kimliği=<Int32[]>
  • Düzeyi=<Int32[]>
  • StartTime
  • EndTime
  • UserID
  • Veri=<String[]>
  • <named-data>=<String[]>
  • SuppressHashFilter=<Hashtable>

Parametre özellikleri

Tür:

Hashtable[]

Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

HashQuerySet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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 Özel Görünüm Oluştur kullanın ve Windows Olay Görüntüleyicisi'nde Geçerli Günlük özelliklerini filtreleyin . 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 sekmesindeki XML'yi FilterXml parametresinin değerine kopyalayabilirsiniz. Olay Görüntüleyicisi özellikleri hakkında daha fazla bilgi için Olay Görüntüleyicisi Yardımı'na 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 xml gizleme öğ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.

Parametre özellikleri

Tür:XmlDocument
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

XmlQuerySet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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'ninSeçim Filtreleri bölümü.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

GetLogSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
GetProviderSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
FileSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Force

Diğer olay günlüklerine ek olarak hata ayıklama ve analiz günlüklerini alır. Name parametresinin değeri joker karakter içerdiğinde hata ayıklama veya analiz günlüğü almak için Force parametresi gerekir.

Varsayılan olarak, hata ayıklama veya analiz günlüğünün tam adını belirtmediğiniz sürece Get-WinEvent cmdlet'i bu günlükleri dışlar.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

GetLogSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
ListLogSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
GetProviderSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
HashQuerySet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

ListLogSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-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 işareti (*) joker karakterini kullanın.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

ListProviderSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-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ı Get-WinEvent cmdlet'ine de yöneltebilirsiniz.

Uyarı

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 }

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

GetLogSet
Position:0
Zorunlu:False
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-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.

Parametre özellikleri

Tür:Int64
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

GetLogSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
GetProviderSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
FileSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
HashQuerySet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
XmlQuerySet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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, .etl ve .evt dosyalarından ve hata ayıklama ve analiz günlüklerinden olayları 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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

GetLogSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
GetProviderSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
FileSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
HashQuerySet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
XmlQuerySet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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, .evt, .evtxve .etl dosya adı uzantılarına sahip dosyaları destekler. Aynı komuta farklı dosyalardan ve dosya türlerinden olaylar ekleyebilirsiniz.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False
Diğer adlar:PSPath

Parametre kümeleri

FileSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-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.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

GetProviderSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

Girişler

String

Bu cmdlet'e bir LogName (dize) kanal oluşturabilirsiniz.

XmlDocument

Bir FilterXML sorgusunu bu cmdlet'e yöneltebilirsiniz.

Hashtable

FilterHashtable sorgusunu bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

EventLogConfiguration

ListLog parametresiyle bu cmdlet EventLogConfiguration nesnelerini döndürür.

EventLogRecord

Varsayılan olarak, bu cmdlet EventLogRecord nesnelerini döndürür.

ProviderMetadata

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 Get-EventLog cmdlet'ini değiştirmek için tasarlanmıştır. Get-EventLog olayları yalnızca klasik olay günlüklerinde alır. Get-EventLog geriye dönük uyumluluk için korunur.

Get-WinEvent ve Get-EventLog cmdlet'leri Windows Yükleme Öncesi Ortamı'nda (Windows PE) desteklenmez.