Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a minta csak Windows-platformokra vonatkozik.
Az eredeti, 2014. június 3-i Scripting Guy blogbejegyzés elolvasásához lásd: Az eseménynapló szűrése a FilterHashTable használatával a PowerShell-lel.
Ez a cikk az eredeti blogbejegyzés egy részlete, amely bemutatja, hogyan használható a Get-WinEvent parancsmag FilterHashtable paramétere az eseménynaplók szűrésére. A PowerShell parancsmagja Get-WinEvent hatékony módszer a Windows-események és diagnosztikai naplók szűrésére. A teljesítmény akkor javul, ha egy Get-WinEvent lekérdezés a FilterHashtable paramétert használja.
Ha nagy eseménynaplókkal dolgozik, nem hatékony objektumokat küldeni a folyamatból egy Where-Object parancsnak. A PowerShell 6 előtt a Get-EventLog parancsmag egy másik lehetőség volt a naplóadatok lekérésére. Az alábbi parancsok például nem hatékonyak a Microsoft-Windows-Töredezettségmentesítési naplók szűréséhez:
Get-EventLog -LogName Application | Where-Object Source -Match defrag
Get-WinEvent -LogName Application | Where-Object { $_.ProviderName -match 'defrag' }
A következő parancs egy kivonattáblát használ, amely javítja a teljesítményt:
Get-WinEvent -FilterHashtable @{
LogName='Application'
ProviderName='*defrag'
}
Blogbejegyzések az enumerálásról
Ez a cikk az enumerált értékek kivonattáblában való használatáról nyújt tájékoztatást. Az enumerálással kapcsolatos további információkért olvassa el ezeket a Scripting Guy blogbejegyzéseket. Ha olyan függvényt szeretne létrehozni, amely az enumerált értékeket adja vissza, tekintse meg az Enumerációk és értékek című témakört. További információkért lásd a Scripting Guy blogbejegyzések sorozatát az enumerálásról.
Hash tábla kulcs-érték párjai
A hatékony lekérdezések létrehozásához használja a Get-WinEvent parancsmagot a FilterHashtable paraméterrel.
A FilterHashtable szűrőként elfogad egy kivonattáblát, hogy konkrét információkat kapjon a Windows eseménynaplóiból. A kivonattáblák kulcs-érték párokat használnak. További információkért a kivonattáblákról lásd: about_Hash_Tables.
Ha a kulcs-érték párok ugyanazon a sorban vannak, pontosvesszővel kell elválasztani őket. Ha minden kulcs-érték pár külön sorban van, nincs szükség a pontosvesszőre. Ez a cikk például külön sorokba helyezi a kulcs-érték párokat, és nem használ pontosvesszőket.
Ez a minta a FilterHashtable paraméter kulcs-érték párjait használja. A befejezett lekérdezés tartalmazza a LogName, a ProviderName, a Kulcsszavak, az Azonosító és a Szint lehetőséget.
Az elfogadott kulcs-érték párok az alábbi táblázatban láthatók, és a Get-WinEventFilterHashtable paraméter dokumentációjában szerepelnek.
Az alábbi táblázat a kulcsneveket, az adattípusokat és a helyettesítő karaktereket jeleníti meg az adatértékek esetében.
| Kulcs neve | Érték adattípusa | Helyettesítő karaktereket fogad el? |
|---|---|---|
| LogName | <String[]> |
Igen |
| Szolgáltatónév | <String[]> |
Igen |
| Útvonal | <String[]> |
Nem |
| Kulcsszavak | <Long[]> |
Nem |
| ID (Azonosító) | <Int32[]> |
Nem |
| Szint | <Int32[]> |
Nem |
| KezdésiIdő | <DateTime> |
Nem |
| Befejezés ideje | <DateTime> |
Nem |
| UserID | <SID> |
Nem |
| Adat | <String[]> |
Nem |
<named-data> |
<String[]> |
Nem |
A <named-data> kulcs egy elnevezett eseményadatmezőt jelöl. A Perflib event 1008 például a következő eseményadatokat tartalmazhatja:
<EventData>
<Data Name="Service">BITS</Data>
<Data Name="Library">C:\Windows\System32\bitsperf.dll</Data>
<Data Name="Win32Error">2</Data>
</EventData>
Ezeket az eseményeket az alábbi paranccsal kérdezheti le:
Get-WinEvent -FilterHashtable @{LogName='Application'; 'Service'='Bits'}
Megjegyzés
A lekérdezési <named-data> lehetőség a PowerShell 6-ban lett hozzáadva.
Lekérdezés létrehozása kivonattáblával
Az eredmények ellenőrzéséhez és a problémák elhárításához segít egyszerre egy kulcs-érték párból összeállítani a kivonattáblát. A lekérdezés adatokat kér le az alkalmazásnaplóból . A kivonattábla egyenértékű a következővel Get-WinEvent -LogName Application.
Először hozza létre a lekérdezést Get-WinEvent . Használja a FilterHashtable paraméter kulcs-érték párját a LogName kulccsal és az Application értékkel.
Get-WinEvent -FilterHashtable @{
LogName='Application'
}
Folytassa a kivonattábla összeállítását a ProviderName kulccsal. A ProviderName általában a Windows EseménynaplóForrás mezőjében megjelenő név. Például .NET Runtime a következő képernyőképen:
A Windows Eseménynapló forrásainak képe
Frissítse a kivonattáblát, és foglalja bele a kulcs-érték párot a kulccsal, a ProviderName és az értékkel. .NET Runtime
Get-WinEvent -FilterHashtable @{
LogName='Application'
ProviderName='.NET Runtime'
}
Megjegyzés
Egyes eseményszolgáltatók esetében a megfelelő ProviderName az Esemény tulajdonságai lap Részletek lapján érhető el. Például olyan események, ahol a Forrás mező láthatóDefrag, a helyes ProviderName a Microsoft-Windows-Defrag.
Ha a lekérdezésnek archivált eseménynaplókból kell adatokat lekérnie, használja az Elérési út kulcsot. Az Elérési út érték a naplófájl teljes elérési útját adja meg. További információkért lásd a Scripting Guy blogbejegyzést, amely a PowerShell használatával elemzi a mentett eseménynaplókat a hibákhoz.
Számbavételi értékek használata kivonattáblában
A kulcsszavak a következő kulcs a kivonattáblában. A Kulcsszavak adattípus a nagy számot tartalmazó értéktípus tömbje [long] . A következő paranccsal keresse meg a maximális értéket [long]:
[long]::MaxValue
9223372036854775807
A Kulcsszavak kulcs esetében a PowerShell egy számot használ, nem pedig egy sztringet, például a Biztonságot. A Windows Eseménynapló sztringekként jeleníti meg a kulcsszavakat, de ezek valójában felsorolt értékek. A kivonatoló táblában, ha a Kulcsszavak kulcsot sztringértékkel használja, hibaüzenet jelenik meg.
Nyissa meg a Windows Eseménynaplót , és a Műveletek panelen kattintson az Aktuális napló szűrése elemre. A Kulcsszavak legördülő menü az elérhető kulcsszavakat jeleníti meg az alábbi képernyőképen látható módon:
A Windows Eseménynapló kulcsszavak képe
A tulajdonságnevek megjelenítéséhez használja az StandardEventKeywords alábbi parancsot.
[System.Diagnostics.Eventing.Reader.StandardEventKeywords] |
Get-Member -Static -MemberType Property
TypeName: System.Diagnostics.Eventing.Reader.StandardEventKeywords
Name MemberType Definition
—- ———- ———-
AuditFailure Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
AuditSuccess Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
CorrelationHint Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
CorrelationHint2 Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
EventLogClassic Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
None Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
ResponseTime Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
Sqm Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
WdiContext Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
WdiDiagnostic Property static System.Diagnostics.Eventing.Reader.StandardEventKey…
Az enumerált értékek a .NET-keretrendszerben vannak dokumentálva. További információért lásd: StandardEventKeywords felsorolás.
A Kulcsszavak nevek és az enumerált értékek a következők:
| Név | Érték |
|---|---|
| Audit hiba | 4503599627370496 |
| AuditSiker | 9007199254740992 |
| KorrelációTipp2 | 18014398509481984 |
| EventLogClassic | 36028797018963968 |
| négyzetméter | 2251799813685248 |
| WdiDiagnostic | 1125899906842624 |
| WdiContext | 562949953421312 |
| ResponseTime | 281474976710656 |
| Egyik sem | 0 |
Frissítse a kivonattáblát, és adja meg a kulcs-érték párot a kulccsal, a kulcsszavakkal és az EventLogClassic enumerálási értékkel, 36028797018963968.
Get-WinEvent -FilterHashtable @{
LogName='Application'
ProviderName='.NET Runtime'
Keywords=36028797018963968
}
Kulcsszavak statikus tulajdonságértéke (nem kötelező)
A Kulcsszavak kulcs enumerálva van, de használhat statikus tulajdonságnevet a kivonattáblázat lekérdezésében. A visszaadott sztring használata helyett a tulajdonság nevét a value__ tulajdonsággal rendelkező értékké kell konvertálni.
Az alábbi szkript például a value__ tulajdonságot használja.
$C = [System.Diagnostics.Eventing.Reader.StandardEventKeywords]::EventLogClassic
Get-WinEvent -FilterHashtable @{
LogName='Application'
ProviderName='.NET Runtime'
Keywords=$C.value__
}
Szűrés eseményazonosító szerint
Pontosabb adatok lekéréséhez a lekérdezés eredményeit eseményazonosító szűri. Az eseményazonosítórakulcsazonosítóként hivatkozik a kivonattáblában, az érték pedig egy adott eseményazonosító. A Windows Eseménynapló megjeleníti az eseményazonosítót. Ez a példa az 1023-at használja.
Frissítse a kivonattáblát, és adja hozzá a kulcs-érték párt a kulccsal Id és az értékkel 1023.
Get-WinEvent -FilterHashtable @{
LogName='Application'
ProviderName='.NET Runtime'
Keywords=36028797018963968
ID=1023
}
Szűrés szint szerint
Az eredmények további finomításához és csak a hibákat tartalmazó események belefoglalásához használja a Level billentyűt. A Windows Eseménynapló szöveges értékként jeleníti meg a szintet, de ezek felsorolt értékek. A kivonatoló táblában, ha a Szint kulcsot sztringértékkel használja, hibaüzenet jelenik meg.
A szint olyan értékeket tartalmaz, mint a Hiba, a Figyelmeztetés vagy a Tájékoztató. A tulajdonságnevek megjelenítéséhez használja az StandardEventLevel alábbi parancsot.
[System.Diagnostics.Eventing.Reader.StandardEventLevel] |
Get-Member -Static -MemberType Property
TypeName: System.Diagnostics.Eventing.Reader.StandardEventLevel
Name MemberType Definition
---- ---------- ----------
Critical Property static System.Diagnostics.Eventing.Reader.StandardEventLevel Critical {get;}
Error Property static System.Diagnostics.Eventing.Reader.StandardEventLevel Error {get;}
Informational Property static System.Diagnostics.Eventing.Reader.StandardEventLevel Informational {get;}
LogAlways Property static System.Diagnostics.Eventing.Reader.StandardEventLevel LogAlways {get;}
Verbose Property static System.Diagnostics.Eventing.Reader.StandardEventLevel Verbose {get;}
Warning Property static System.Diagnostics.Eventing.Reader.StandardEventLevel Warning {get;}
Az enumerált értékek a .NET-keretrendszerben vannak dokumentálva. További információ: StandardEventLevel Enumeration.
A Szintkulcs nevei és felsorolt értékei a következők:
| Név | Érték |
|---|---|
| Részletezés | 5 |
| Tájékoztató | 4 |
| Figyelmeztetés | 3 |
| Hiba | 2 |
| Nélkülözhetetlen | 1 |
| LogAlways | 0 |
A befejezett lekérdezés kivonattáblája tartalmazza a kulcsot, a Szintet és az értéket( 2).
Get-WinEvent -FilterHashtable @{
LogName='Application'
ProviderName='.NET Runtime'
Keywords=36028797018963968
ID=1023
Level=2
}
Statikus tulajdonság szintje az enumerálásban (nem kötelező)
A Level kulcs enumerálva van, de használhat statikus tulajdonságnevet a kivonattáblázat lekérdezésében. A visszaadott sztring használata helyett a tulajdonság nevét a value__ tulajdonsággal rendelkező értékké kell konvertálni.
Az alábbi szkript például a value__ tulajdonságot használja.
$C = [System.Diagnostics.Eventing.Reader.StandardEventLevel]::Informational
Get-WinEvent -FilterHashtable @{
LogName='Application'
ProviderName='.NET Runtime'
Keywords=36028797018963968
ID=1023
Level=$C.value__
}