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-Listher ö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-ObjectLogMode, 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 $EventCount ö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-ObjectId ö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-ObjectNesneleri 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-ObjectNesneleri 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-Tablesü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-Object403 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) &lt;= 86400000]]]</Select>
  </Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery

# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) &lt;= 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 , .evtve .evtx günlük dosyalarının .etlyolları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, .evtxve .etl dosya adı uzantılarına .evtsahip 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

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