Sdílet prostřednictvím


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

GetLogSet (Výchozí)

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

ListLogSet

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

ListProviderSet

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

GetProviderSet

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

FileSet

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

HashQuerySet

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

XmlQuerySet

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

Description

Tato rutina je dostupná jenom na platformě Windows.

Rutina získává události z protokolů událostí, včetně klasických protokolů, jako jsou systému a protokoly application. 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 vrací informace o událostech v pořadí od nejnovějšího po nejstarší.

Get-WinEvent uvádí protokoly událostí a zprostředkovatele protokolu událostí. Pokud chcete příkaz přerušit, stiskněte klávesu 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 je Get-WinEvent získá. Klasické protokoly se načtou jako první, za kterými následují nové protokoly událostí systému Windows. Protokol Record Count 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 používá parametr ListLog k určení protokolu Setup. Objekt se odešle do kanálu do rutiny Format-List. k zobrazení každé vlastnosti používá parametr vlastnost hvězdičkou ().

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. Protokol Record Count může mít hodnotu null nebo nula. Příklad používá proměnnou $_. Viz about_Automatic_Variablespro více informací.

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 Where-Object rutiny. 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 nenulovou hodnotou.

Příklad 5: Získání protokolů událostí z více serverů

Tento příklad získá objekty, které představují aplikační protokoly událostí 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 naleznete 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, Server02a Server03. Příkaz foreach používá smyčku ke zpracování každého serveru ($Server in $S). Blok skriptu ve složených závorkách ({ }) spustí příkaz Get-WinEvent. 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 Select-Object rutiny. Select-Object získá vlastnosti LogMode, MaximumSizeInBytes, RecordCount, LogNamea použije počítaný výraz k zobrazení ComputerName pomocí proměnné $Server. Objekty se odesílají do rutiny Format-Table, aby se zobrazil výstup v konzole PowerShellu. Automatické nastavení naformátuje výstup tak, aby odpovídal obrazovce.

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

(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 listlogu používá k získání objektů pro tento protokol application. ProviderNames je vlastnost objektu a zobrazí 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ásad kdekoli v názvu poskytovatele.

Příklad 9: Získání ID událostí, které generuje zprostředkovatel událostí

Tento příkaz vypíše ID událostí, které Microsoft-Windows-GroupPolicy zprostředkovatel událostí 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 Format-Table rutiny. 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í jsou uloženy v proměnné a potom seskupené a počítány podle id události a level.

$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 proměnné $Event. Vlastnost zobrazuje celkový počet protokolovaných událostí.

Proměnná $Event se odešle do kanálu do rutiny Group-Object. 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 kanálu do rutiny Sort-Object. pomocí parametru vlastnost seřadí objekty podle Count. Parametr Descending zobrazuje 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 kanálu do rutiny Group-Object. používá parametr vlastnost k určení vlastnosti LevelDisplayName a spočítá objekty podle LevelDisplayName. Objekty jsou seskupeny podle úrovní, jako jsou 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ý LevelDisplayName.

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 zadání názvů protokolů. Objekty se odesílají do Group-Object rutiny. používá parametr vlastnost k seskupení objektů podle LevelDisplayName a LogName. Parametr NoElement odebere z výstupu další vlastnosti. Seskupené objekty se odesílají do kanálu do rutiny Format-Table. Format-Table k formátování sloupců používá parametr Automatické nastavení velikosti. Sloupec Count obsahuje celkový počet každé události. Sloupec Název obsahuje seskupený 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 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ších 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 je uložen jako .etl, například TraceLog.etl. Události jsou uvedeny v pořadí, v jakém jsou zapsány do protokolu, takže Nejstarší parametr je povinný.

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. Parametr Nejstarší 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 Sort-Object rutiny Sort-Object seřadí objekty sestupně podle hodnoty vlastnosti TimeCreated. Objekty se odesílají do rutiny Select-Object, 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 .NET Framework objektu, EventLogRecord, můžete je filtrovat se stejnými vlastnostmi. Příkaz vyžaduje parametr Nejstarší, protože čte ze souboru .etl, ale parametr Nejstarší 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. Parametr Nejstarší 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 Where-Object rutiny. Where-Object používá blok skriptu k vyhledání událostí s ID403. 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 Power Shellu 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) &amp;lt;= 86400000]]]</Select>
  </Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery

# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) &amp;lt;= 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 Application. 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 proměnné $Date.

Rutina Get-WinEvent získá informace protokolu. K filtrování výstupu se používá parametr FilterHashtable. Klíč LogName určuje hodnotu jako protokol Application. Klíč StartTime používá hodnotu uloženou v proměnné $Date. 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 proměnné $StartTime.

Rutina Get-WinEvent získá informace protokolu. K filtrování výstupu se používá parametr FilterHashtable. Klíč LogName určuje hodnotu jako protokol Application. Klíč ProviderName používá hodnotu Application Error, což je zdrojováudálosti . Klíč dat používá hodnotu iexplore.exe Klíč StartTime používá hodnotu uloženou v 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-WinEventzí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ý pro spouštění vzdálených příkazů.

Vlastnosti parametru

Typ:String
Default value:Local computer
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Kn

Sady parametrů

GetLogSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
ListLogSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
ListProviderSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
GetProviderSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
HashQuerySet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
XmlQuerySet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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.

Vlastnosti parametru

Typ:PSCredential
Default value:Current user
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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 k LogName a ProviderName klíče.
  • Každý klíč může být uveden pouze jednou v každé tabulce hash.
  • Hodnota Path přebírá cesty k .etl, .evta souborům protokolu .evtx.
  • Ve stejném dotazu je možné použít klíče LogName, Patha Provider Name.
  • Klíč ID uživatele 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 System.Security.Principal.NTAccount objektu.
  • Hodnota Data přebírá data událostí v nepojmenovaném poli. Například události v klasických protokolech událostí.
  • <named-data> klíč představuje pojmenované datové pole události.

Pokud Get-WinEvent nemůže 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é páry Get-WinEventklíč/hodnota jsou následující:

  • Název_protokolu=<String[]>
  • Název poskytovatele=<String[]>
  • cesta=<String[]>
  • klíčových slov
  • ID=<Int32[]>
  • úrovně
  • = <DateTime> StartTime
  • = <DateTime> endtime
  • ID uživatele=<SID>
  • dat
  • <named-data>=<String[]>
  • SuppressHashFilter=<Hashtable>

Vlastnosti parametru

Typ:

Hashtable[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

HashQuerySet
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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 Vytvořit vlastní zobrazení a Filtrovat aktuální funkce protokolu v Prohlížeči událostí systému Windows. 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 FilterXml parametru. Další informace o funkcích Prohlížeče událostí naleznete v nápovědě k prohlížeči 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 Potlačit XML element, 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.

Vlastnosti parametru

Typ:XmlDocument
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

XmlQuerySet
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-FilterXPath

Určuje dotaz XPath, který tato rutina vybere události z jednoho nebo více protokolů.

Další informace o jazyce XPath naleznete v tématu referenční XPath a oddíl Filtry výběru výběr událostí.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

GetLogSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
GetProviderSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
FileSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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.

Rutina Get-WinEvent tyto protokoly ve výchozím nastavení vylučuje, pokud nezadáte úplný název ladicího nebo analytického protokolu.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

GetLogSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
ListLogSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
GetProviderSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
HashQuerySet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-ListLog

Určuje protokoly událostí. Do seznamu odděleného čárkami zadejte názvy protokolů událostí. Jsou povoleny zástupné symboly. Pokud chcete získat všechny protokoly, použijte zástupný znak hvězdičky (*).

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

ListLogSet
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-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é symboly. Pokud chcete získat poskytovatele všech protokolů událostí v počítači, použijte zástupný znak hvězdičky (*).

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

ListProviderSet
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-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é symboly. Názvy protokolů můžete také hlásit rutině Get-WinEvent.

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 }

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

GetLogSet
Position:0
Povinné:False
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

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

Vlastnosti parametru

Typ:Int64
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

GetLogSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
GetProviderSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
FileSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
HashQuerySet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
XmlQuerySet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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í z .etl a .evt souborů a z protokolů ladění a analýzy. Vtěchtoch

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

GetLogSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
GetProviderSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
FileSet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
HashQuerySet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False
XmlQuerySet
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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 názvů souborů .evt, .evtxa .etl. Do stejného příkazu můžete zahrnout události z různých souborů a typů souborů.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False
Aliasy:PSPath

Sady parametrů

FileSet
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

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

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

GetProviderSet
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

String

Do této rutiny můžete převést logName (řetězec).

XmlDocument

Do této rutiny můžete dotaz FilterXML převést.

Hashtable

Do této rutiny můžete směrovat dotaz FilterHashtable .

Výstupy

EventLogConfiguration

Pomocí parametru ListLog tato rutina vrátí objekty EventLogConfiguration .

EventLogRecord

Ve výchozím nastavení vrátí tato rutina objekty EventLogRecord .

ProviderMetadata

Při použití parametru ListProvider vrátí tato rutina objekty ProviderMetadata .

Poznámky

Get-WinEvent je navržena tak, aby nahradila 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án kvůli zpětné kompatibilitě.

Rutiny Get-WinEvent a Get-EventLog nejsou podporovány v prostředí windows před instalací (Windows PE).