Get-WinEvent
Mendapatkan peristiwa dari log peristiwa dan file log pelacakan peristiwa di komputer lokal dan jarak jauh.
Sintaks
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>]
Deskripsi
Cmdlet ini hanya tersedia di platform Windows.
Get-WinEvent
Cmdlet mendapatkan peristiwa dari log peristiwa, termasuk log klasik, seperti log Sistem dan Aplikasi. Cmdlet mendapatkan data dari log peristiwa yang dihasilkan oleh teknologi Log Peristiwa Windows yang diperkenalkan di Windows Vista dan peristiwa dalam file log yang dihasilkan oleh Pelacakan Peristiwa untuk Windows (ETW). Secara default, Get-WinEvent
mengembalikan informasi peristiwa dalam urutan terbaru ke terlama.
Get-WinEvent
mencantumkan log peristiwa dan penyedia log peristiwa. Untuk mengganggu perintah, tekan CTRL+C. Anda bisa mendapatkan peristiwa dari log yang dipilih atau dari log yang dihasilkan oleh penyedia peristiwa yang dipilih. Dan, Anda dapat menggabungkan peristiwa dari beberapa sumber dalam satu perintah.
Get-WinEvent
memungkinkan Anda memfilter peristiwa menggunakan kueri XPath, kueri XML terstruktur, dan kueri tabel hash.
Jika Anda tidak menjalankan PowerShell sebagai Administrator, Anda mungkin melihat pesan kesalahan yang tidak dapat Anda ambil informasi tentang log.
Contoh
Contoh 1: Mendapatkan semua log dari komputer lokal
Perintah ini mendapatkan semua log peristiwa pada komputer lokal. Log tercantum dalam urutan yang Get-WinEvent
mendapatkannya. Log klasik diambil terlebih dahulu, diikuti oleh log Peristiwa Windows baru.
Dimungkinkan bagi RecordCount log menjadi null, yang kosong, atau nol.
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 mendapatkan informasi log dari komputer. Parameter ListLog menggunakan kartubebas tanda bintang (*
) untuk menampilkan informasi tentang setiap log.
Contoh 2: Dapatkan log Penyiapan klasik
Perintah ini mendapatkan objek EventLogConfiguration yang mewakili log Penyiapan klasik. Objek mencakup informasi tentang log, seperti ukuran file, penyedia, jalur file, dan apakah log diaktifkan.
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 menggunakan parameter ListLog untuk menentukan log Penyiapan.Get-WinEvent
Objek dikirimkan alur ke Format-List
cmdlet. Format-List
menggunakan parameter Properti dengan kartubebas tanda bintang (*
) untuk menampilkan setiap properti.
Contoh 3: Mengonfigurasi log Keamanan klasik
Perintah ini mendapatkan objek EventLogConfiguration yang mewakili log Keamanan klasik. Objek kemudian digunakan untuk mengonfigurasi pengaturan untuk log, seperti ukuran file maks, jalur file, dan apakah log diaktifkan.
$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 menggunakan parameter ListLog untuk menentukan log Keamanan.Get-WinEvent
Objek disimpan ke variabel. Properti MaximumSizeInBytes diatur ke 1 gigabyte pada objek. Metode SaveChanges dipanggil untuk mendorong perubahan ke sistem di dalam blok coba untuk menangani pelanggaran akses. Get-WinEvent
Cmdlet dipanggil lagi pada log Keamanan dan disalurkan ke Format-List
cmdlet untuk memverifikasi bahwa properti MaximumSizeInBytes telah disimpan pada komputer.
Contoh 4: Mendapatkan log peristiwa dari server
Perintah ini hanya mendapatkan log peristiwa pada komputer lokal yang berisi peristiwa. Dimungkinkan bagi RecordCount log menjadi null atau nol. Contohnya menggunakan $_
variabel . Untuk informasi selengkapnya, lihat 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 mendapatkan informasi log dari komputer. Parameter ListLog menggunakan kartubebas tanda bintang (*
) untuk menampilkan informasi tentang setiap log. Parameter ComputerName menentukan untuk mendapatkan log dari komputer lokal, localhost. Objek dikirimkan alur ke Where-Object
cmdlet. Where-Object
$_.RecordCount
menggunakan untuk mengembalikan hanya log yang berisi data. $_
adalah variabel yang mewakili objek saat ini dalam alur. RecordCount adalah properti objek dengan nilai non-null.
Contoh 5: Mendapatkan log peristiwa dari beberapa server
Contoh ini mendapatkan objek yang mewakili log peristiwa Aplikasi di tiga komputer: Server01, Server02, dan Server03. Kata kunci ForEach digunakan karena parameter ComputerName hanya menerima satu nilai. Untuk informasi selengkapnya, lihat 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
Variabel $S
menyimpan nama tiga server: Server01, Server02, dan Server03. Pernyataan ForEach menggunakan perulangan untuk memproses setiap server, ($Server in $S)
. Blok skrip di kurung kurawal ({ }
) menjalankan Get-WinEvent
perintah. Parameter ListLog menentukan log Aplikasi . Parameter ComputerName menggunakan variabel $Server
untuk mendapatkan informasi log dari setiap server.
Objek dikirimkan alur ke Select-Object
cmdlet. Select-Object
mendapatkan properti LogMode, MaximumSizeInBytes, RecordCount, LogName, dan menggunakan ekspresi terhitung untuk menampilkan ComputerName menggunakan $Server
variabel . Objek dikirimkan alur ke Format-Table
cmdlet untuk menampilkan output di konsol PowerShell. Parameter AutoSize memformat output agar pas dengan layar.
Contoh 6: Mendapatkan penyedia log peristiwa dan nama log
Perintah ini mendapatkan penyedia log peristiwa dan log tempat mereka menulis.
Get-WinEvent -ListProvider *
Name : .NET Runtime
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Name : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Get-WinEvent
Cmdlet mendapatkan informasi log dari komputer. Parameter ListProvider menggunakan kartubebas tanda bintang (*
) untuk menampilkan informasi tentang setiap penyedia. Dalam output, Nama adalah penyedia dan LogLinks adalah log yang ditulis penyedia.
Contoh 7: Mendapatkan semua penyedia log peristiwa yang menulis ke log tertentu
Perintah ini mendapatkan semua penyedia yang menulis ke log Aplikasi .
(Get-WinEvent -ListLog Application).ProviderNames
.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management
Get-WinEvent
Cmdlet mendapatkan informasi log dari komputer. Parameter ListLog menggunakan Aplikasi untuk mendapatkan objek untuk log tersebut. ProviderNames adalah properti objek dan menampilkan penyedia yang menulis ke log Aplikasi .
Contoh 8: Mendapatkan nama penyedia log peristiwa yang berisi string tertentu
Perintah ini mendapatkan penyedia log peristiwa dengan nama yang menyertakan string tertentu dalam nama penyedia.
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 mendapatkan informasi log dari komputer. Parameter ListProvider menggunakan kartubebas tanda bintang (*
) untuk menemukan Kebijakan di mana saja dalam nama penyedia.
Contoh 9: Dapatkan Id Peristiwa yang dihasilkan penyedia peristiwa
Perintah ini mencantumkan Id Peristiwa yang dihasilkan penyedia peristiwa Microsoft-Windows-GroupPolicy bersama dengan deskripsi peristiwa.
(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 mendapatkan informasi log dari komputer. Parameter ListProvider menentukan penyedia, Microsoft-Windows-GroupPolicy. Ekspresi dibungkus dalam tanda kurung dan menggunakan properti Peristiwa untuk mendapatkan objek. Objek dikirimkan alur ke Format-Table
cmdlet. Format-Table
menampilkan Id dan Deskripsi objek peristiwa.
Contoh 10: Mendapatkan informasi log dari properti objek peristiwa
Contoh ini menunjukkan cara mendapatkan informasi tentang konten log menggunakan properti objek peristiwa. Objek peristiwa disimpan dalam variabel lalu dikelompokkan dan dihitung berdasarkan Id Peristiwa dan Tingkat.
$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 menggunakan parameter LogName untuk menentukan log peristiwa Windows PowerShell.Get-WinEvent
Objek peristiwa disimpan dalam $Event
variabel. Properti Hitung memperlihatkan $Event
jumlah total peristiwa yang dicatat.
Variabel $Event
dikirimkan alur ke Group-Object
cmdlet. Group-Object
menggunakan parameter Properti untuk menentukan properti Id dan menghitung objek menurut nilai Id peristiwa. Parameter NoElement menghapus properti lain dari output objek. Objek yang dikelompokkan dikirim ke alur ke Sort-Object
cmdlet. Sort-Object
menggunakan parameter Properti untuk mengurutkan objek menurut Hitungan. Parameter Turun menampilkan output menurut hitungan, dari tertinggi hingga terendah. Dalam output, kolom Hitung berisi jumlah total setiap peristiwa. Kolom Nama berisi nomor Id peristiwa yang dikelompokkan.
Variabel $Event
dikirimkan alur ke Group-Object
cmdlet. Group-Object
menggunakan parameter Properti untuk menentukan properti LevelDisplayName dan menghitung objek menurut LevelDisplayName. Objek dikelompokkan menurut tingkat seperti Peringatan dan Informasi.
Parameter NoElement menghapus properti lain dari output. Dalam output, kolom Hitung berisi jumlah total setiap peristiwa. Kolom Nama berisi LevelDisplayName yang dikelompokkan.
Contoh 11: Dapatkan peristiwa kesalahan yang memiliki string tertentu dalam namanya
Contoh ini menggunakan string nama log yang dipisahkan koma. Output dikelompokkan menurut tingkat seperti kesalahan atau peringatan dan nama log.
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 mendapatkan informasi log dari komputer. Parameter LogName menggunakan string yang dipisahkan koma dengan kartubebas tanda bintang (*
) untuk menentukan nama log. Objek dikirimkan alur ke Group-Object
cmdlet. Group-Object
menggunakan parameter Properti untuk mengelompokkan objek menurut LevelDisplayName dan LogName. Parameter NoElement menghapus properti lain dari output. Objek yang dikelompokkan dikirim ke alur ke Format-Table
cmdlet. Format-Table
menggunakan parameter AutoSize untuk memformat kolom. Kolom Hitung berisi jumlah total setiap peristiwa. Kolom Nama berisi LevelDisplayName dan LogName yang dikelompokkan.
Contoh 12: Mendapatkan peristiwa dari log peristiwa yang diarsipkan
Get-WinEvent
bisa mendapatkan informasi peristiwa dari file log yang disimpan. Sampel ini menggunakan log PowerShell yang diarsipkan yang disimpan di komputer lokal.
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 mendapatkan informasi log dari komputer. Parameter Jalur menentukan direktori dan nama file.
Contoh 13: Mendapatkan sejumlah peristiwa tertentu dari log peristiwa yang diarsipkan
Perintah ini mendapatkan sejumlah peristiwa tertentu dari log peristiwa yang diarsipkan. Get-WinEvent
memiliki parameter yang bisa mendapatkan jumlah maksimum peristiwa atau peristiwa terlama. Sampel ini menggunakan log PowerShell yang diarsipkan yang disimpan di C:\Test\PowerShellCore Operational.evtx.
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 mendapatkan informasi log dari komputer. Parameter Jalur menentukan direktori dan nama file. Parameter MaxEvents menentukan bahwa 100 rekaman ditampilkan, dari yang terbaru hingga terlama.
Contoh 14: Pelacakan Peristiwa untuk Windows
Pelacakan Peristiwa untuk Windows (ETW) menulis peristiwa ke log saat peristiwa terjadi. Peristiwa disimpan dalam urutan terlama ke yang terbaru. File ETW yang .etl
diarsipkan disimpan seperti TraceLog.etl.
Peristiwa tercantum dalam urutan penulisan ke log, sehingga parameter Terlama diperlukan.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
Sort-Object -Property TimeCreated -Descending |
Select-Object -First 100
Get-WinEvent
Cmdlet mendapatkan informasi log dari file yang diarsipkan. Parameter Jalur menentukan direktori dan nama file. Parameter terlama digunakan untuk menghasilkan peristiwa dalam urutan yang ditulis, terlama hingga terbaru. Objek dikirim ke alur ke Sort-Object
cmdlet Sort-Object
mengurutkan objek dalam urutan menurun menurut nilai properti TimeCreated . Objek dikirimkan alur ke Select-Object
cmdlet yang menampilkan 100 peristiwa terbaru.
Contoh 15: Mendapatkan peristiwa dari log pelacakan peristiwa
Contoh ini menunjukkan cara mendapatkan peristiwa dari file log jejak peristiwa (.etl
) dan file log Windows PowerShell yang diarsipkan (.evtx
). Anda dapat menggabungkan beberapa jenis file dalam satu perintah.
Karena file berisi jenis objek .NET Framework yang sama, EventLogRecord, Anda dapat memfilternya dengan properti yang sama. Perintah memerlukan parameter Terlama karena membaca dari .etl
file, tetapi parameter Terlama berlaku untuk setiap file.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
Where-Object { $_.Id -eq '403' }
Get-WinEvent
Cmdlet mendapatkan informasi log dari file yang diarsipkan. Parameter Jalur menggunakan daftar yang dipisahkan koma untuk menentukan setiap direktori file dan nama file. Parameter terlama digunakan untuk menghasilkan peristiwa dalam urutan yang ditulis, terlama hingga terbaru. Objek dikirimkan alur ke Where-Object
cmdlet. Where-Object
menggunakan blok skrip untuk menemukan peristiwa dengan Id 403. Variabel $_
mewakili objek saat ini dalam alur dan Id adalah properti Id Peristiwa.
Contoh 16: Memfilter hasil log peristiwa
Contoh ini menunjukkan berbagai metode untuk memfilter dan memilih peristiwa dari log peristiwa. Semua perintah ini mendapatkan peristiwa yang terjadi dalam 24 jam terakhir dari log peristiwa Windows PowerShell .
Metode filter lebih efisien daripada menggunakan Where-Object
cmdlet. Filter diterapkan saat objek diambil. Where-Object
mengambil semua objek, lalu menerapkan filter ke semua objek.
# 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
Contoh 17: Gunakan FilterHashtable untuk mendapatkan peristiwa dari log Aplikasi
Contoh ini menggunakan parameter FilterHashtable untuk mendapatkan peristiwa dari log Aplikasi . Tabel hash menggunakan pasangan kunci/nilai . Untuk informasi selengkapnya tentang parameter FilterHashtable , lihat Membuat kueri Get-WinEvent dengan FilterHashtable. Untuk informasi selengkapnya tentang tabel hash, lihat about_Hash_Tables.
$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }
Get-Date
Cmdlet menggunakan metode AddDays untuk mendapatkan tanggal yang dua hari sebelum tanggal saat ini. Objek tanggal disimpan dalam $Date
variabel .
Get-WinEvent
Cmdlet mendapatkan informasi log. Parameter FilterHashtable digunakan untuk memfilter output. Kunci LogName menentukan nilai sebagai log Aplikasi . Kunci StartTime menggunakan nilai yang disimpan dalam $Date
variabel. Kunci Id menggunakan nilai Id Peristiwa, 1003.
Contoh 18: Gunakan FilterHashtable untuk mendapatkan kesalahan aplikasi
Contoh ini menggunakan parameter FilterHashtable untuk menemukan kesalahan aplikasi Internet Explorer yang terjadi dalam seminggu terakhir.
$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
Logname='Application'
ProviderName='Application Error'
Data='iexplore.exe'
StartTime=$StartTime
}
Get-Date
Cmdlet menggunakan metode AddDays untuk mendapatkan tanggal yang tujuh hari sebelum tanggal saat ini. Objek tanggal disimpan dalam $StartTime
variabel .
Get-WinEvent
Cmdlet mendapatkan informasi log. Parameter FilterHashtable digunakan untuk memfilter output. Kunci LogName menentukan nilai sebagai log Aplikasi . Kunci ProviderName menggunakan nilai, Kesalahan Aplikasi, yang merupakan Sumber peristiwa. Kunci Data menggunakan nilai iexplore.exe Kunci StartTime menggunakan nilai yang disimpan dalam $StartTime
variabel.
Contoh 19: Gunakan SuppressHashFilter untuk memfilter kesalahan aplikasi
Seperti Contoh 16 di atas, contoh ini menggunakan parameter FilterHashtable untuk mendapatkan peristiwa dari log Aplikasi . Namun, kami menambahkan kunci SuppressHashFilter untuk memfilter peristiwa tingkat Informasi .
$Date = (Get-Date).AddDays(-2)
$filter = @{
LogName='Application'
StartTime=$Date
SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter
Dalam contoh ini, Get-WinEvent
mendapatkan semua peristiwa dari log Aplikasi selama dua hari terakhir kecuali yang memiliki Tingkat 4 (Informasi).
Parameter
-ComputerName
Menentukan nama komputer yang cmdlet ini mendapatkan peristiwa dari log peristiwa. Ketik nama NetBIOS, alamat IP, atau nama domain yang sepenuhnya memenuhi syarat (FQDN) komputer. Nilai defaultnya adalah komputer lokal, localhost. Parameter ini hanya menerima satu nama komputer pada satu waktu.
Untuk mendapatkan log peristiwa dari komputer jarak jauh, konfigurasikan port firewall untuk layanan log peristiwa untuk mengizinkan akses jarak jauh.
Cmdlet ini tidak bergantung pada jarak jauh PowerShell. Anda dapat menggunakan parameter ComputerName meskipun komputer Anda tidak dikonfigurasi untuk menjalankan perintah jarak jauh.
Jenis: | String |
Alias: | Cn |
Position: | Named |
Nilai default: | Local computer |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Credential
Menentukan akun pengguna yang memiliki izin untuk melakukan tindakan ini. Nilai defaultnya adalah pengguna saat ini.
Ketik nama pengguna, seperti User01 atau Domain01\User01. Atau, masukkan objek PSCredential , seperti yang dihasilkan oleh Get-Credential
cmdlet. Jika Anda mengetik nama pengguna, Anda akan dimintai kata sandi. Jika Anda hanya mengetik nama parameter, Anda akan dimintai nama pengguna dan kata sandi.
Jenis: | PSCredential |
Position: | Named |
Nilai default: | Current user |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-FilterHashtable
Menentukan kueri dalam format tabel hash untuk memilih peristiwa dari satu atau beberapa log peristiwa. Kueri berisi tabel hash dengan satu atau beberapa pasangan kunci/nilai .
Kueri tabel hash memiliki aturan berikut:
- Kunci dan nilai tidak peka huruf besar/kecil.
- Karakter kartubebas hanya valid dalam nilai yang terkait dengan kunci LogName dan ProviderName .
- Setiap kunci hanya dapat dicantumkan sekali di setiap tabel hash.
- Nilai Jalur mengambil jalur ke
.etl
file log ,.evt
, dan.evtx
. - Kunci LogName, Path, dan ProviderName dapat digunakan dalam kueri yang sama.
- Kunci UserID dapat mengambil pengidentifikasi keamanan (SID) yang valid atau nama akun domain yang dapat digunakan untuk membuat objek System.Security.Principal.NTAccount yang valid.
- Nilai Data mengambil data peristiwa dalam bidang yang tidak disebutkan namanya. Misalnya, peristiwa di log peristiwa klasik.
<named-data>
kunci mewakili bidang data peristiwa bernama.
Ketika Get-WinEvent
tidak dapat menginterpretasikan pasangan kunci/nilai , itu menginterpretasikan kunci sebagai nama peka huruf besar/kecil untuk data peristiwa dalam peristiwa tersebut.
Pasangan kunci/nilai yang valid Get-WinEvent
adalah sebagai berikut:
- LogName=
<String[]>
- ProviderName=
<String[]>
- Jalur=
<String[]>
- Kata kunci=
<Long[]>
- ID=
<Int32[]>
- Tingkat=
<Int32[]>
- StartTime=
<DateTime>
- EndTime=
<DateTime>
- UserID=
<SID>
- Data=
<String[]>
<named-data>
=<String[]>
- SuppressHashFilter=
<Hashtable>
Jenis: | Hashtable[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-FilterXml
Menentukan kueri XML terstruktur yang cmdlet ini memilih peristiwa dari satu atau beberapa log peristiwa.
Untuk menghasilkan kueri XML yang valid, gunakan fitur Buat Tampilan Kustom dan Filter Log Saat Ini di Windows Pemantau Peristiwa. Gunakan item dalam kotak dialog untuk membuat kueri, lalu klik tab XML untuk menampilkan kueri dalam format XML. Anda dapat menyalin XML dari tab XML ke dalam nilai parameter FilterXml . Untuk informasi selengkapnya tentang fitur Pemantau Peristiwa, lihat Bantuan Pemantau Peristiwa.
Gunakan kueri XML untuk membuat kueri kompleks yang berisi beberapa pernyataan XPath. Format XML juga memungkinkan Anda menggunakan elemen Tekan XML yang mengecualikan peristiwa dari kueri. Untuk informasi selengkapnya tentang skema XML untuk kueri log peristiwa, lihat Skema Kueri dan bagian Kueri Peristiwa XML dari Pemilihan Peristiwa.
Anda juga dapat membuat elemen Suppress menggunakan parameter FilterHashtable .
Jenis: | XmlDocument |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-FilterXPath
Menentukan kueri XPath yang cmdlet ini memilih peristiwa dari satu atau beberapa log.
Untuk informasi selengkapnya tentang bahasa XPath, lihat Referensi XPath dan bagian Filter Pilihan dari Pemilihan Peristiwa.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Force
Mendapatkan log debug dan analitik, selain log peristiwa lainnya. Parameter Paksa diperlukan untuk mendapatkan debug atau log analitik saat nilai parameter nama menyertakan karakter kartubebas.
Secara default, Get-WinEvent
cmdlet mengecualikan log ini kecuali Anda menentukan nama lengkap debug atau log analitik.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-ListLog
Menentukan log peristiwa. Masukkan nama log peristiwa dalam daftar yang dipisahkan koma. Kartubebas diizinkan. Untuk mendapatkan semua log, gunakan kartubebas tanda bintang (*
).
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | True |
-ListProvider
Menentukan penyedia log peristiwa yang didapat cmdlet ini. Penyedia log peristiwa adalah program atau layanan yang menulis peristiwa ke log peristiwa.
Masukkan nama penyedia dalam daftar yang dipisahkan koma. Kartubebas diizinkan. Untuk mendapatkan penyedia semua log peristiwa di komputer, gunakan kartubebas tanda bintang (*
).
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | True |
-LogName
Menentukan log peristiwa tempat cmdlet ini mendapatkan peristiwa. Masukkan nama log peristiwa dalam daftar yang dipisahkan koma. Kartubebas diizinkan. Anda juga dapat menyalurkan nama log ke Get-WinEvent
cmdlet.
Catatan
PowerShell tidak membatasi jumlah log yang dapat Anda minta. Namun, Get-WinEvent
cmdlet meminta WINDOWS API yang memiliki batas 256. Ini dapat menyulitkan untuk memfilter semua log Anda pada satu waktu. Anda dapat mengatasinya dengan menggunakan perulangan foreach
untuk melakukan iterasi melalui setiap log seperti ini: Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | True |
Terima karakter wildcard: | True |
-MaxEvents
Menentukan jumlah maksimum peristiwa yang dikembalikan. Masukkan bilangan bulat seperti 100. Defaultnya adalah mengembalikan semua peristiwa dalam log atau file.
Jenis: | Int64 |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Oldest
Tunjukkan bahwa cmdlet ini mendapatkan peristiwa dalam urutan terlama-pertama. Secara default, peristiwa dikembalikan dalam urutan pertama terbaru.
Parameter ini diperlukan untuk mendapatkan peristiwa dari .etl
.evt
dan file dan dari log debug dan analitik. Dalam file-file ini, peristiwa dicatat dalam urutan pertama terlama, dan peristiwa hanya dapat dikembalikan dalam urutan terlama-pertama.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Path
Menentukan jalur ke file log peristiwa tempat cmdlet ini mendapatkan peristiwa. Masukkan jalur ke file log dalam daftar yang dipisahkan koma, atau gunakan karakter kartubebas untuk membuat pola jalur file.
Get-WinEvent
mendukung file dengan .evt
ekstensi nama file , .evtx
, dan .etl
. Anda dapat menyertakan peristiwa dari file dan jenis file yang berbeda dalam perintah yang sama.
Jenis: | String[] |
Alias: | PSPath |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | True |
-ProviderName
Menentukan, sebagai array string, penyedia log peristiwa tempat cmdlet ini mendapatkan peristiwa. Masukkan nama penyedia dalam daftar yang dipisahkan koma, atau gunakan karakter kartubebas untuk membuat pola nama penyedia.
Penyedia log peristiwa adalah program atau layanan yang menulis peristiwa ke log peristiwa. Ini bukan penyedia PowerShell.
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | True |
Input
Anda dapat menyalurkan LogName (string) ke cmdlet ini.
Anda dapat menyalurkan kueri FilterXML ke cmdlet ini.
Anda dapat menyalurkan kueri FilterHashtable ke cmdlet ini.
Output
Dengan parameter ListLog, cmdlet ini mengembalikan objek EventLogConfiguration.
Secara default, cmdlet ini mengembalikan objek EventLogRecord .
Dengan parameter ListProvider, cmdlet ini mengembalikan objek ProviderMetadata.
Catatan
Get-WinEvent
dirancang untuk mengganti Get-EventLog
cmdlet pada komputer yang menjalankan Windows Vista dan versi Windows yang lebih baru. Get-EventLog
mendapatkan peristiwa hanya di log peristiwa klasik. Get-EventLog
dipertahankan untuk kompatibilitas mundur.
Get-WinEvent
cmdlet dan Get-EventLog
tidak didukung di Windows Pre-installation Environment (Windows PE).