Get-WinEvent
Získá události z protokolů událostí a soubory protokolu trasování událostí na místních a vzdálených počítačích.
Syntaxe
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
Tato rutina je dostupná jenom na platformě Windows.
Rutina Get-WinEvent
získává události z protokolů událostí, včetně klasických protokolů, jako jsou systémové protokoly a protokoly aplikací. Rutina získává data z protokolů událostí generovaných technologií protokolu událostí systému Windows zavedených v systému Windows Vista a událostí v souborech protokolu generovaných trasováním událostí pro Windows (ETW). Ve výchozím nastavení Get-WinEvent
vrátí informace o události v pořadí od nejnovějšího po nejstarší.
Get-WinEvent
vypíše protokoly událostí a zprostředkovatele protokolu událostí. Pokud chcete příkaz přerušit, stiskněte ctrl +C. Události můžete získat z vybraných protokolů nebo z protokolů generovaných vybranými poskytovateli událostí. A v jednom příkazu můžete kombinovat události z více zdrojů.
Get-WinEvent
umožňuje filtrovat události pomocí dotazů XPath, strukturovaných dotazů XML a dotazů na tabulky hash.
Pokud powershell nepoužíváte jako správce, můžou se zobrazit chybové zprávy, které nemůžete načíst informace o protokolu.
Příklady
Příklad 1: Získání všech protokolů z místního počítače
Tento příkaz získá všechny protokoly událostí v místním počítači. Protokoly jsou uvedené v pořadí, v jakém Get-WinEvent
je získá. Klasické protokoly se načtou jako první, za kterými následují nové protokoly událostí systému Windows.
Parametr RecordCount protokolu může mít hodnotu null, což je prázdné nebo nula.
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
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr ListLog používá zástupný znak hvězdičky (*
) k zobrazení informací o jednotlivých protokolech.
Příklad 2: Získání klasického protokolu instalace
Tento příkaz získá EventLogConfiguration objekt, který představuje klasický instalační protokol. Objekt obsahuje informace o protokolu, například o velikosti souboru, poskytovateli, cestě k souboru a o tom, jestli je protokol povolený.
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 :
Rutina Get-WinEvent
k zadání protokolu instalace používá parametr ListLog. Objekt se odešle do rutiny Format-List
v kanálu. Format-List
pomocí parametru Property se zástupným znakem hvězdička (*
) zobrazí každou vlastnost.
Příklad 3: Konfigurace klasického protokolu zabezpečení
Tento příkaz získá EventLogConfiguration objekt, který představuje klasický protokol zabezpečení . Objekt se pak použije ke konfiguraci nastavení protokolu, jako je maximální velikost souboru, cesta k souboru a jestli je protokol povolený.
$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 :
Rutina Get-WinEvent
k zadání protokolu zabezpečení používá parametr ListLog. Objekt je uložen do proměnné. Vlastnost MaximumSizeInBytes je nastavena na 1 gigabajt objektu. Metoda SaveChanges je volána k nasdílení změn do systému uvnitř bloku pokusu o zpracování narušení přístupu. Rutina Get-WinEvent
se znovu volá v protokolu zabezpečení a předá do Format-List
rutiny, aby ověřila, že vlastnost MaximumSizeInBytes byla uložena na počítači.
Příklad 4: Získání protokolů událostí ze serveru
Tento příkaz získá pouze protokoly událostí v místním počítači, které obsahují události. Parametr RecordCount protokolu může mít hodnotu null nebo nulu. Příklad používá proměnnou $_
. Další informace najdete v tématu 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
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr ListLog používá zástupný znak hvězdičky (*
) k zobrazení informací o jednotlivých protokolech. Parametr ComputerName určuje, že se mají protokoly získat z místního počítače localhost. Objekty se odesílají do rutiny Where-Object
. Where-Object
používá $_.RecordCount
k vrácení pouze protokolů, které obsahují data. $_
je proměnná, která představuje aktuální objekt v kanálu. RecordCount je vlastnost objektu s hodnotou, která nemá hodnotu null.
Příklad 5: Získání protokolů událostí z více serverů
Tento příklad získá objekty, které představují protokoly událostí aplikace na třech počítačích: Server01, Server02 a Server03. Klíčové slovo ForEach se používá, protože parametr ComputerName přijímá pouze jednu hodnotu. Další informace najdete v tématu 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
Proměnná $S
ukládá názvy tří serverů: Server01, Server02 a Server03. Příkaz ForEach používá smyčku ke zpracování jednotlivých serverů . ($Server in $S)
Blok skriptu ve složených závorkách ({ }
) spustí Get-WinEvent
příkaz. Parametr ListLog určuje protokol aplikace . Parametr ComputerName používá proměnnou $Server
k získání informací protokolu z každého serveru.
Objekty se odesílají do rutiny Select-Object
. Select-Object
získá vlastnosti LogMode, MaximumSizeInBytes, RecordCount, LogName a používá počítaný výraz k zobrazení ComputerName pomocí $Server
proměnné. Objekty se odesílají do rutiny Format-Table
, aby se zobrazil výstup v konzole PowerShellu. Parametr AutoSize formátuje výstup tak, aby se vešl na obrazovku.
Příklad 6: Získání zprostředkovatelů protokolu událostí a názvů protokolů
Tento příkaz získá zprostředkovatele protokolu událostí a protokoly, do kterých zapisují.
Get-WinEvent -ListProvider *
Name : .NET Runtime
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Name : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr ListProvider používá zástupný znak hvězdičky (*
) k zobrazení informací o každém poskytovateli. Ve výstupu je název zprostředkovatel a LogLinks je protokol, do kterého zprostředkovatel zapisuje.
Příklad 7: Získání všech zprostředkovatelů protokolu událostí, kteří zapisuje do konkrétního protokolu
Tento příkaz získá všechny zprostředkovatele, kteří zapisuje do protokolu aplikace .
(Get-WinEvent -ListLog Application).ProviderNames
.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr ListLog používá k získání objektů pro tento protokol aplikaci . ProviderNames je vlastnost objektu a zobrazuje zprostředkovatele, kteří zapisují do protokolu aplikace .
Příklad 8: Získání názvů zprostředkovatelů protokolu událostí, které obsahují konkrétní řetězec
Tento příkaz získá zprostředkovatele protokolu událostí s názvy, které obsahují konkrétní řetězec v názvu zprostředkovatele.
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 : {}
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr ListProvider používá zástupný znak hvězdičky (*
) k vyhledání zásady kdekoli v názvu zprostředkovatele.
Příklad 9: Získání ID událostí, které generuje zprostředkovatel událostí
Tento příkaz vypíše ID událostí, které zprostředkovatel událostí Microsoft-Windows-GroupPolicy generuje spolu s popisem události.
(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.
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr ListProvider určuje zprostředkovatele, Microsoft-Windows-GroupPolicy. Výraz je zabalen v závorkách a používá events vlastnost získat objekty. Objekty se odesílají do rutiny Format-Table
. Format-Table
zobrazí ID a popis objektů událostí.
Příklad 10: Získání informací protokolu z vlastností objektu události
Tento příklad ukazuje, jak získat informace o obsahu protokolu pomocí vlastností objektu události. Objekty událostí se ukládají do proměnné a pak seskupí a počítají podle ID události a úrovně.
$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
Rutina Get-WinEvent
používá parametr LogName k určení protokolu událostí Windows PowerShellu. Objekty událostí jsou uloženy v $Event
proměnné. Vlastnost $Event
Count zobrazuje celkový počet protokolovaných událostí.
Proměnná $Event
se odešle do rutiny Group-Object
v kanálu. Group-Object
pomocí parametru Property určuje vlastnost ID a spočítá objekty podle hodnoty ID události. Parametr NoElement odebere z výstupu objektů další vlastnosti. Seskupené objekty se odesílají do rutiny Sort-Object
. Sort-Object
pomocí parametru Property seřadí objekty podle count. Parametr Descending zobrazí výstup podle počtu od nejvyššího po nejnižší. Ve výstupu sloupec Count obsahuje celkový počet každé události. Sloupec Název obsahuje seskupené id události.
Proměnná $Event
se odešle do rutiny Group-Object
v kanálu. Group-Object
používá Property parametr k určení LevelDisplayName vlastnost a spočítá objekty Podle LevelDisplayName. Objekty jsou seskupené podle úrovní, jako je Upozornění a Informace.
Parametr NoElement odebere z výstupu další vlastnosti. Ve výstupu sloupec Count obsahuje celkový počet každé události. Sloupec Název obsahuje seskupený Název ÚrovněDisplayName.
Příklad 11: Získání chybových událostí, které mají v názvu zadaný řetězec
V tomto příkladu se používá řetězec s oddělovačem názvů protokolů. Výstup se seskupí podle úrovně, jako je chyba nebo upozornění a název protokolu.
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
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr LogName používá řetězec oddělený čárkami se zástupným znakem hvězdičky (*
) k určení názvů protokolů. Objekty se odesílají do rutiny Group-Object
. Group-Object
pomocí parametru Property seskupí objekty podle LevelDisplayName a LogName. Parametr NoElement odebere z výstupu další vlastnosti. Seskupené objekty se odesílají do rutiny Format-Table
. Format-Table
používá k formátování sloupců parametr AutoSize. Sloupec Počet obsahuje celkový počet každé události. Sloupec Název obsahuje seskupený Název LevelDisplayName a LogName.
Příklad 12: Získání událostí z archivovaného protokolu událostí
Get-WinEvent
může získat informace o událostech z uložených souborů protokolu. Tato ukázka používá archivovaný protokol PowerShellu uložený v místním počítači.
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...
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr Cesta určuje název adresáře a souboru.
Příklad 13: Získání určitého počtu událostí z archivovaného protokolu událostí
Tyto příkazy z archivovaného protokolu událostí získají určitý počet událostí. Get-WinEvent
obsahuje parametry, které můžou získat maximální počet událostí nebo nejstarší události. Tato ukázka používá archivovaný protokol PowerShellu, který je uložený v 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
Rutina Get-WinEvent
získá informace protokolu z počítače. Parametr Path určuje adresář a název souboru. Parametr MaxEvents určuje, že se zobrazí 100 záznamů od nejnovějšího po nejstarší.
Příklad 14: Trasování událostí pro Windows
Trasování událostí pro Windows (ETW) zapisuje události do protokolu při výskytu událostí. Události se ukládají v pořadí od nejstaršího po nejnovější. Archivovaný soubor ETW se uloží jako .etl
například TraceLog.etl.
Události jsou uvedeny v pořadí, v jakém jsou zapsány do protokolu, takže je vyžadován nejstarší parametr.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
Sort-Object -Property TimeCreated -Descending |
Select-Object -First 100
Rutina Get-WinEvent
získá informace protokolu z archivovaného souboru. Parametr Cesta určuje název adresáře a souboru. Nejstarší parametr slouží k výstupu událostí v pořadí, v jakém se zapisují, od nejstaršího k nejnovějšímu. Objekty se odesílají do rutiny Sort-Object
Sort-Object
seřadí objekty sestupně podle hodnoty Vlastnosti TimeCreated . Objekty se odesílají do Select-Object
rutiny, která zobrazuje 100 nejnovějších událostí.
Příklad 15: Získání událostí z protokolu trasování událostí
Tento příklad ukazuje, jak získat události ze souboru protokolu trasování událostí (.etl
) a archivovaného souboru protokolu Windows PowerShellu (.evtx
). V jednom příkazu můžete zkombinovat více typů souborů.
Vzhledem k tomu, že soubory obsahují stejný typ objektu rozhraní .NET Framework , EventLogRecord, můžete je filtrovat se stejnými vlastnostmi. Příkaz vyžaduje nejstarší parametr, protože čte ze .etl
souboru, ale nejstarší parametr platí pro každý soubor.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
Where-Object { $_.Id -eq '403' }
Rutina Get-WinEvent
získá informace protokolu z archivovaných souborů. Parametr Path používá seznam oddělený čárkami k určení jednotlivých adresářů souborů a názvu souboru. Nejstarší parametr slouží k výstupu událostí v pořadí, v jakém se zapisují, od nejstaršího k nejnovějšímu. Objekty se odesílají do rutiny Where-Object
. Where-Object
používá blok skriptu k vyhledání událostí s ID 403. Proměnná $_
představuje aktuální objekt v kanálu a ID je vlastnost ID události.
Příklad 16: Filtrování výsledků protokolu událostí
Tento příklad ukazuje různé metody filtrování a výběru událostí z protokolu událostí. Všechny tyto příkazy z protokolu událostí Windows PowerShellu získají události, ke kterým došlo za posledních 24 hodin.
Metody filtru jsou efektivnější než použití rutiny Where-Object
. Filtry se použijí při načítání objektů. Where-Object
načte všechny objekty a pak použije filtry na všechny objekty.
# 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
Příklad 17: Použití filterHashtable k získání událostí z protokolu aplikace
Tento příklad používá parametr FilterHashtable k získání událostí z protokolu aplikace . Tabulka hash používá páry klíč/hodnota . Další informace o parametru FilterHashtable naleznete v tématu Vytváření dotazů Get-WinEvent pomocí FilterHashtable. Další informace o tabulkách hash najdete v tématu about_Hash_Tables.
$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }
Rutina Get-Date
používá metodu AddDays k získání data, které je dva dny před aktuálním datem. Objekt data je uložen v $Date
proměnné.
Rutina Get-WinEvent
získá informace protokolu. K filtrování výstupu se používá parametr FilterHashtable . Klíč LogName určuje hodnotu jako protokol aplikace . Klíč StartTime používá hodnotu uloženou $Date
v proměnné. Klíč ID používá hodnotu ID události 1003.
Příklad 18: Použití filterHashtable k získání chyb aplikace
Tento příklad používá parametr FilterHashtable k vyhledání chyb aplikace Internet Explorer, ke kterým došlo v posledním týdnu.
$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
Logname='Application'
ProviderName='Application Error'
Data='iexplore.exe'
StartTime=$StartTime
}
Rutina Get-Date
používá metodu AddDays k získání data, které je sedm dní před aktuálním datem. Objekt data je uložen v $StartTime
proměnné.
Rutina Get-WinEvent
získá informace protokolu. K filtrování výstupu se používá parametr FilterHashtable . Klíč LogName určuje hodnotu jako protokol aplikace . Klíč ProviderName používá hodnotu Application Error, což je zdroj události. Datový klíč používá hodnotu iexplore.exe klíč StartTime používá hodnotu uloženou v $StartTime
proměnné.
Příklad 19: Filtrování chyb aplikace pomocí SuppressHashFilter
Podobně jako v příkladu 16 výše tento příklad používá parametr FilterHashtable k získání událostí z protokolu aplikace . Klíč SuppressHashFilter však přidáme k vyfiltrování událostí na úrovni informací.
$Date = (Get-Date).AddDays(-2)
$filter = @{
LogName='Application'
StartTime=$Date
SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter
V tomto příkladu Get-WinEvent
získá všechny události z protokolu aplikace za poslední dva dny s výjimkou těch, které mají úroveň 4 (informace).
Parametry
-ComputerName
Určuje název počítače, který tato rutina získává události z protokolů událostí. Zadejte název NetBIOS, IP adresu nebo plně kvalifikovaný název domény (FQDN) počítače. Výchozí hodnota je místní počítač localhost. Tento parametr přijímá současně pouze jeden název počítače.
Pokud chcete získat protokoly událostí ze vzdálených počítačů, nakonfigurujte port brány firewall pro službu protokolu událostí tak, aby umožňoval vzdálený přístup.
Tato rutina nespoléhá na vzdálené komunikace PowerShellu. Parametr ComputerName můžete použít i v případě, že váš počítač není nakonfigurovaný tak, aby spouštět vzdálené příkazy.
Typ: | String |
Aliasy: | Cn |
Position: | Named |
Default value: | Local computer |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Credential
Určuje uživatelský účet, který má oprávnění k provedení této akce. Výchozí hodnota je aktuální uživatel.
Zadejte uživatelské jméno, například User01 nebo Domain01\User01. Nebo zadejte objekt PSCredential , například objekt vygenerovaný rutinou Get-Credential
. Pokud zadáte uživatelské jméno, zobrazí se výzva k zadání hesla. Pokud zadáte jenom název parametru, zobrazí se výzva k zadání uživatelského jména i hesla.
Typ: | PSCredential |
Position: | Named |
Default value: | Current user |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-FilterHashtable
Určuje dotaz ve formátu tabulky hash pro výběr událostí z jednoho nebo více protokolů událostí. Dotaz obsahuje tabulku hash s jednou nebo více páry klíč/hodnota .
Dotazy na tabulky hash mají následující pravidla:
- Klíče a hodnoty nerozlišují malá a velká písmena.
- Zástupné znaky jsou platné pouze v hodnotách přidružených ke klíčům LogName a ProviderName .
- Každý klíč může být uveden pouze jednou v každé tabulce hash.
- Hodnota Cesta přebírá cesty k
.etl
,.evt
a.evtx
soubory protokolu. - Klíče LogName, Path a ProviderName lze použít ve stejném dotazu.
- Klíč UserID může mít platný identifikátor zabezpečení (SID) nebo název účtu domény, který lze použít k vytvoření platného objektu System.Security.Principal.NTAccount.
- Hodnota Data přebírá data události v nepojmenovaném poli. Například události v klasických protokolech událostí.
<named-data>
key představuje pojmenované datové pole události.
Pokud Get-WinEvent
nelze interpretovat dvojici klíč/hodnota , interpretuje klíč jako název rozlišující malá a velká písmena pro data události v události.
Platné Get-WinEvent
páry klíč/hodnota jsou následující:
- LogName=
<String[]>
- ProviderName=
<String[]>
- Cesta=
<String[]>
- Klíčová slova=
<Long[]>
- ID=
<Int32[]>
- Úroveň=
<Int32[]>
- Počáteční čas=
<DateTime>
- Koncový čas=
<DateTime>
- UserID=
<SID>
- Data=
<String[]>
<named-data>
=<String[]>
- SuppressHashFilter=
<Hashtable>
Typ: | Hashtable[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-FilterXml
Určuje strukturovaný dotaz XML, který tato rutina vybere události z jednoho nebo více protokolů událostí.
Pokud chcete vygenerovat platný dotaz XML, použijte funkce Vytvořit vlastní zobrazení a filtrovat aktuální protokol ve Windows Prohlížeč událostí. Pomocí položek v dialogovém okně vytvořte dotaz a potom kliknutím na kartu XML zobrazte dotaz ve formátu XML. Kód XML můžete z karty XML zkopírovat do hodnoty parametru FilterXml . Další informace o funkcích Prohlížeč událostí najdete v nápovědě k Prohlížeč událostí.
Pomocí dotazu XML vytvořte složitý dotaz, který obsahuje několik příkazů XPath. Formát XML také umožňuje použít element Suppress XML , který vylučuje události z dotazu. Další informace o schématu XML pro dotazy protokolu událostí naleznete v tématu Schéma dotazu a část Dotazy událostí XML výběru událostí.
Pomocí parametru FilterHashtable můžete také vytvořit element Suppress.
Typ: | XmlDocument |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-FilterXPath
Určuje dotaz XPath, který tato rutina vybere události z jednoho nebo více protokolů.
Další informace o jazyku XPath naleznete v tématu Odkaz XPath a oddíl Filtry výběru události.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Force
Získá kromě dalších protokolů událostí také protokoly ladění a analýzy. Parametr Force se vyžaduje k získání ladicího nebo analytického protokolu, pokud hodnota parametru name obsahuje zástupné znaky.
Ve výchozím nastavení rutina Get-WinEvent
tyto protokoly vylučuje, pokud nezadáte úplný název ladicího nebo analytického protokolu.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-ListLog
Určuje protokoly událostí. Do seznamu odděleného čárkami zadejte názvy protokolů událostí. Jsou povoleny zástupné cardy. Pokud chcete získat všechny protokoly, použijte zástupný znak hvězdičky (*
).
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-ListProvider
Určuje zprostředkovatele protokolu událostí, které tato rutina získá. Zprostředkovatel protokolu událostí je program nebo služba, která zapisuje události do protokolu událostí.
Zadejte názvy poskytovatelů do seznamu odděleného čárkami. Jsou povoleny zástupné cardy. Pokud chcete získat poskytovatele všech protokolů událostí v počítači, použijte zástupný znak hvězdičky (*
).
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-LogName
Určuje protokoly událostí, ze které tato rutina získává události. Do seznamu odděleného čárkami zadejte názvy protokolů událostí. Jsou povoleny zástupné cardy. Do rutiny Get-WinEvent
můžete také zadávat názvy protokolů.
Poznámka:
PowerShell neomezuje množství protokolů, které si můžete vyžádat. Rutina Get-WinEvent
se však dotazuje rozhraní API systému Windows, které má limit 256. To může ztížit filtrování všech protokolů najednou. Tento problém můžete obejít tak, že pomocí foreach
smyčky iterujete jednotlivé protokoly takto: Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-MaxEvents
Určuje maximální počet vrácených událostí. Zadejte celé číslo, například 100. Výchozí hodnota je vrátit všechny události v protokolech nebo souborech.
Typ: | Int64 |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Oldest
Označuje, že tato rutina získá události v nejstarším pořadí. Ve výchozím nastavení se události vrací v nejnovějším pořadí.
Tento parametr je nutný k získání událostí ze .etl
souborů a .evt
protokolů ladění a analýzy. Vtěchtoch
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Path
Určuje cestu k souborům protokolu událostí, ze které tato rutina získává události. Zadejte cesty k souborům protokolu v seznamu odděleném čárkami nebo pomocí zástupných znaků vytvořte vzory cesty k souboru.
Get-WinEvent
podporuje soubory s příponou .evt
, .evtx
a .etl
název souboru. Do stejného příkazu můžete zahrnout události z různých souborů a typů souborů.
Typ: | String[] |
Aliasy: | PSPath |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-ProviderName
Určuje jako pole řetězců zprostředkovatele protokolu událostí, ze kterých tato rutina získává události. Zadejte názvy zprostředkovatelů do seznamu odděleného čárkami nebo pomocí zástupných znaků vytvořte vzory názvů zprostředkovatelů.
Zprostředkovatel protokolu událostí je program nebo služba, která zapisuje události do protokolu událostí. Nejedná se o poskytovatele PowerShellu.
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
Vstupy
Do této rutiny můžete převést logName (řetězec).
Do této rutiny můžete dotaz FilterXML převést.
Do této rutiny můžete směrovat dotaz FilterHashtable .
Výstupy
Pomocí parametru ListLog tato rutina vrátí objekty EventLogConfiguration .
Ve výchozím nastavení vrátí tato rutina objekty EventLogRecord .
Při použití parametru ListProvider vrátí tato rutina objekty ProviderMetadata .
Poznámky
Get-WinEvent
je navržený tak, aby nahradil rutinu Get-EventLog
na počítačích se systémem Windows Vista a novějšími verzemi Systému Windows. Get-EventLog
získá události pouze v klasických protokolech událostí. Get-EventLog
je zachována kvůli zpětné kompatibilitě.
Tyto Get-WinEvent
rutiny Get-EventLog
nejsou podporovány v prostředí před instalací systému Windows (Windows PE).