Get-WinEvent
Hiermee haalt u gebeurtenissen op uit gebeurtenislogboeken en logboekbestanden voor gebeurtenistracering op lokale en externe computers.
Syntaxis
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
Deze cmdlet is alleen beschikbaar op het Windows-platform.
De Get-WinEvent
-cmdlet haalt gebeurtenissen op uit gebeurtenislogboeken, inclusief klassieke logboeken, zoals de logboeken System en Application. De cmdlet haalt gegevens op uit gebeurtenislogboeken die worden gegenereerd door de Windows-gebeurtenislogboektechnologie die is geïntroduceerd in Windows Vista en gebeurtenissen in logboekbestanden die zijn gegenereerd door Event Tracing for Windows (ETW). Standaard retourneert Get-WinEvent
gebeurtenisgegevens in de volgorde van nieuw naar oud.
Get-WinEvent
bevat gebeurtenislogboeken en gebeurtenislogboekproviders. Als u de opdracht wilt onderbreken, drukt u op Ctrl+C-. U kunt gebeurtenissen ophalen uit geselecteerde logboeken of uit logboeken die zijn gegenereerd door geselecteerde gebeurtenisproviders. En u kunt gebeurtenissen uit meerdere bronnen combineren in één opdracht.
Get-WinEvent
kunt u gebeurtenissen filteren met behulp van XPath-query's, gestructureerde XML-query's en hashtabelquery's.
Als u PowerShell niet als beheerder uitvoert, ziet u mogelijk foutberichten dat u geen informatie over een logboek kunt ophalen.
Voorbeelden
Voorbeeld 1: Alle logboeken ophalen van een lokale computer
Met deze opdracht worden alle gebeurtenislogboeken op de lokale computer opgeslagen. Logboeken worden weergegeven in de volgorde waarin Get-WinEvent
ze ophaalt. Klassieke logboeken worden eerst opgehaald, gevolgd door de nieuwe Windows-gebeurtenislogboeken.
Het is mogelijk dat de RecordCount- van een logboek null is. Dit is leeg of nul.
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
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter ListLog gebruikt het jokerteken sterretje (*
) om informatie over elk logboek weer te geven.
Voorbeeld 2: het klassieke installatielogboek ophalen
Met deze opdracht wordt een EventLogConfiguration--object opgehaald dat het klassieke Setup logboek vertegenwoordigt. Het object bevat informatie over het logboek, zoals bestandsgrootte, provider, bestandspad en of het logboek is ingeschakeld.
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 :
De Get-WinEvent
-cmdlet gebruikt de parameter ListLog om het Setup-logboek op te geven. Het object wordt naar de pijplijn verzonden naar de cmdlet Format-List
.
Format-List
gebruikt de parameter Eigenschap met het jokerteken sterretje (*
) om elke eigenschap weer te geven.
Voorbeeld 3: het klassieke beveiligingslogboek configureren
Met deze opdracht wordt een EventLogConfiguration--object opgehaald dat het klassieke Security-logboek vertegenwoordigt. Het object wordt vervolgens gebruikt om instellingen voor het logboek te configureren, zoals de maximale bestandsgrootte, het bestandspad en of het logboek is ingeschakeld.
$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 :
De Get-WinEvent
-cmdlet gebruikt de parameter ListLog om het Security-logboek op te geven. Het object wordt opgeslagen in een variabele. De eigenschap MaximumSizeInBytes is ingesteld op 1 gigabyte voor het object. De methode SaveChanges wordt aangeroepen om de wijziging naar het systeem in een pogingsblok te pushen om toegangsschendingen te verwerken. De Get-WinEvent
cmdlet wordt opnieuw aangeroepen in het Security logboek en doorgesluisd naar de Format-List
cmdlet om te controleren of de eigenschap MaximumSizeInBytes is opgeslagen op de computer.
Voorbeeld 4: Gebeurtenislogboeken ophalen van een server
Met deze opdracht worden alleen gebeurtenislogboeken op de lokale computer met gebeurtenissen opgeslagen. Het is mogelijk dat de RecordCount van een logboek null of nul is. In het voorbeeld wordt de variabele $_
gebruikt. Zie about_Automatic_Variables voor meer informatie.
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
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter ListLog gebruikt het jokerteken sterretje (*
) om informatie over elk logboek weer te geven. De parameter ComputerName geeft de logboeken op van de lokale computer, localhost. De objecten worden via de pijplijn naar de Where-Object
-cmdlet verzonden.
Where-Object
gebruikt $_.RecordCount
om alleen logboeken te retourneren die gegevens bevatten.
$_
is een variabele die het huidige object in de pijplijn vertegenwoordigt.
RecordCount is een eigenschap van het object met een niet-null-waarde.
Voorbeeld 5: Gebeurtenislogboeken ophalen van meerdere servers
In dit voorbeeld worden objecten opgehaald die de Application gebeurtenislogboeken vertegenwoordigen op drie computers: Server01, Server02 en Server03. Het trefwoord ForEach- wordt gebruikt omdat de parameter ComputerName slechts één waarde accepteert. Zie about_Foreachvoor meer informatie.
$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
In de variabele $S
worden de namen van drie servers opgeslagen: Server01, Server02en Server03. De instructie ForEach maakt gebruik van een lus voor het verwerken van elke server, ($Server in $S)
. Het scriptblok in de accolades ({ }
) voert de opdracht Get-WinEvent
uit. De parameter ListLog geeft het logboek Application op. De parameter ComputerName gebruikt de variabele $Server
om logboekgegevens van elke server op te halen.
De objecten worden via de pijplijn naar de Select-Object
-cmdlet verzonden.
Select-Object
de eigenschappen ophaalt LogMode, MaximumSizeInBytes, RecordCount, LogNameen een berekende expressie gebruikt om de ComputerName- weer te geven met behulp van de variabele $Server
. De objecten worden naar de pijplijn verzonden naar de Format-Table
-cmdlet om de uitvoer weer te geven in de PowerShell-console. De AutoSize parameter formatteert de uitvoer zodat deze past bij het scherm.
Voorbeeld 6: Gebeurtenislogboekproviders en logboeknamen ophalen
Met deze opdracht worden de gebeurtenislogboekproviders en de logboeken waarnaar ze schrijven, opgeslagen.
Get-WinEvent -ListProvider *
Name : .NET Runtime
LogLinks : {Application}
Opcodes : {}
Tasks : {}
Name : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes : {}
Tasks : {}
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter ListProvider gebruikt het jokerteken sterretje (*
) om informatie over elke provider weer te geven. In de uitvoer is de Name de provider en is LogLinks het logboek waarnaar de provider schrijft.
Voorbeeld 7: alle gebeurtenislogboekproviders ophalen die naar een specifiek logboek schrijven
Met deze opdracht worden alle providers ophaalt die naar het Application-logboek schrijven.
(Get-WinEvent -ListLog Application).ProviderNames
.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter ListLog gebruikt Application om objecten voor dat logboek op te halen.
ProviderNames is een eigenschap van het object en geeft de providers weer die naar het Application-logboek schrijven.
Voorbeeld 8: Namen van gebeurtenislogboekproviders ophalen die een specifieke tekenreeks bevatten
Met deze opdracht haalt u de gebeurtenislogboekproviders op met namen die een specifieke tekenreeks bevatten in de naam van de provider.
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 : {}
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter ListProvider gebruikt het jokerteken sterretje (*
) om Policy overal in de naam van de provider te vinden.
Voorbeeld 9: Gebeurtenis-id's ophalen die door de gebeurtenisprovider worden gegenereerd
Met deze opdracht worden de gebeurtenis-id's vermeld die de Microsoft-Windows-GroupPolicy gebeurtenisprovider samen met de beschrijving van de gebeurtenis genereert.
(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.
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter ListProvider specificeert de provider, Microsoft-Windows-GroupPolicy. De expressie wordt tussen haakjes geplaatst en gebruikt de eigenschap Events om objecten op te halen. De objecten worden via de pijplijn naar de Format-Table
-cmdlet verzonden.
Format-Table
geeft de -id en Beschrijving weer van de gebeurtenisobjecten.
Voorbeeld 10: Logboekgegevens ophalen uit eigenschappen van gebeurtenisobjecten
In dit voorbeeld ziet u hoe u informatie krijgt over de inhoud van een logboek met behulp van eigenschappen van gebeurtenisobjecten. Gebeurtenisobjecten worden opgeslagen in een variabele en vervolgens gegroepeerd en geteld door gebeurtenis-id en niveau.
$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
De Get-WinEvent
-cmdlet gebruikt de parameter LogName om het Windows PowerShell-gebeurtenislogboek op te geven. De gebeurtenisobjecten worden opgeslagen in de $Event
variabele. In de eigenschap Count van $Event
wordt het totale aantal vastgelegde gebeurtenissen weergegeven.
De variabele $Event
wordt naar de pijplijn verzonden naar de Group-Object
-cmdlet.
Group-Object
gebruikt de parameter Eigenschap om de eigenschap id op te geven en telt de objecten op basis van de waarde van de gebeurtenis-id. De parameter NoElement verwijdert andere eigenschappen uit de uitvoer van objecten. De gegroepeerde objecten worden naar de pijplijn verzonden naar de cmdlet Sort-Object
.
Sort-Object
gebruikt de parameter eigenschap om de objecten te sorteren op Count. De parameter aflopend geeft de uitvoer weer op aantal, van hoog naar laag. In de uitvoer bevat de kolom Count het totale aantal gebeurtenissen. De kolom Naam bevat de gegroepeerde gebeurtenis-id-nummers.
De variabele $Event
wordt naar de pijplijn verzonden naar de Group-Object
-cmdlet.
Group-Object
gebruikt de parameter Eigenschap om de eigenschap LevelDisplayName op te geven en telt de objecten op LevelDisplayName-. De objecten worden gegroepeerd op de niveaus zoals Waarschuwing en Informatie.
De parameter NoElement verwijdert andere eigenschappen uit de uitvoer. In de uitvoer bevat de kolom Count het totale aantal gebeurtenissen. De kolom Name bevat de gegroepeerde LevelDisplayName.
Voorbeeld 11: Foutevenementen ophalen met een opgegeven tekenreeks in hun naam
In dit voorbeeld wordt een door komma's gescheiden tekenreeks met logboeknamen gebruikt. De uitvoer wordt gegroepeerd op het niveau, zoals een fout of waarschuwing en de naam van het logboek.
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
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter LogName maakt gebruik van een door komma's gescheiden tekenreeks met het sterretje (*
) om de logboeknamen op te geven. De objecten worden via de pijplijn naar de Group-Object
-cmdlet verzonden.
Group-Object
gebruikt de parameter eigenschap om de objecten te groeperen op LevelDisplayName- en LogName-. De parameter NoElement verwijdert andere eigenschappen uit de uitvoer. De gegroepeerde objecten worden naar de pijplijn verzonden naar de cmdlet Format-Table
.
Format-Table
gebruikt de parameter AutoSize om de kolommen op te maken. De kolom Count bevat het totale aantal gebeurtenissen. De kolom Name bevat de gegroepeerde LevelDisplayName en LogName.
Voorbeeld 12: Gebeurtenissen ophalen uit een gearchiveerd gebeurtenislogboek
Get-WinEvent
kunt gebeurtenisgegevens ophalen uit opgeslagen logboekbestanden. In dit voorbeeld wordt een gearchiveerd PowerShell-logboek gebruikt dat is opgeslagen op de lokale computer.
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...
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter Path geeft de map en bestandsnaam op.
Voorbeeld 13: Een specifiek aantal gebeurtenissen ophalen uit een gearchiveerd gebeurtenislogboek
Met deze opdrachten krijgt u een specifiek aantal gebeurtenissen uit een gearchiveerd gebeurtenislogboek.
Get-WinEvent
parameters heeft die een maximum aantal gebeurtenissen of de oudste gebeurtenissen kunnen ophalen. In dit voorbeeld wordt een gearchiveerd PowerShell-logboek gebruikt dat is opgeslagen in 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
De Get-WinEvent
cmdlet haalt logboekgegevens op van de computer. De parameter Path geeft de map en bestandsnaam op. De parameter MaxEvents geeft aan dat er 100 records worden weergegeven, van nieuw naar oud.
Voorbeeld 14: Gebeurtenistracering voor Windows
Gebeurtenistracering voor Windows (ETW) schrijft gebeurtenissen naar het logboek wanneer gebeurtenissen optreden. De gebeurtenissen worden opgeslagen in de volgorde van oud naar nieuw. Een gearchiveerd ETW-bestand wordt opgeslagen als een .etl
zoals TraceLog.etl.
De gebeurtenissen worden weergegeven in de volgorde waarin ze naar het logboek worden geschreven, zodat de oudste parameter is vereist.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
Sort-Object -Property TimeCreated -Descending |
Select-Object -First 100
De Get-WinEvent
cmdlet haalt logboekgegevens op uit het gearchiveerde bestand. De parameter Path geeft de map en bestandsnaam op. De parameter Oudste wordt gebruikt om gebeurtenissen uit te voeren in de volgorde waarin ze zijn geschreven, van oud naar nieuw. De objecten worden naar de pijplijn verzonden naar de Sort-Object
cmdlet Sort-Object
de objecten in aflopende volgorde sorteren op de waarde van de eigenschap TimeCreated. De objecten worden naar de pijplijn verzonden naar de Select-Object
-cmdlet waarin de nieuwste gebeurtenissen van 100 worden weergegeven.
Voorbeeld 15: Gebeurtenissen ophalen uit een gebeurtenistraceringslogboek
In dit voorbeeld ziet u hoe u de gebeurtenissen kunt ophalen uit een gebeurtenistraceringslogboekbestand (.etl
) en een gearchiveerd Windows PowerShell-logboekbestand (.evtx
). U kunt meerdere bestandstypen combineren in één opdracht.
Omdat de bestanden hetzelfde type .NET Framework-object bevatten, kunt u EventLogRecordfilteren met dezelfde eigenschappen. Voor de opdracht is de parameter oudste vereist, omdat deze wordt gelezen uit een .etl
bestand, maar de parameter oudste is van toepassing op elk bestand.
Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
Where-Object { $_.Id -eq '403' }
De Get-WinEvent
cmdlet haalt logboekgegevens op uit de gearchiveerde bestanden. De parameter Path maakt gebruik van een door komma's gescheiden lijst om elke map en bestandsnaam op te geven. De parameter Oudste wordt gebruikt om gebeurtenissen uit te voeren in de volgorde waarin ze zijn geschreven, van oud naar nieuw. De objecten worden via de pijplijn naar de Where-Object
-cmdlet verzonden.
Where-Object
gebruikt een scriptblok om gebeurtenissen te vinden met een -id van 403-. De $_
variabele vertegenwoordigt het huidige object in de pijplijn en id is de eigenschap Gebeurtenis-id.
Voorbeeld 16: Resultaten van gebeurtenislogboek filteren
In dit voorbeeld ziet u verschillende methoden voor het filteren en selecteren van gebeurtenissen in een gebeurtenislogboek. Met al deze opdrachten worden gebeurtenissen opgehaald die in de afgelopen 24 uur zijn opgetreden vanuit het gebeurtenislogboek van Windows PowerShell.
De filtermethoden zijn efficiënter dan het gebruik van de Where-Object
-cmdlet. Filters worden toegepast wanneer de objecten worden opgehaald.
Where-Object
alle objecten ophaalt en vervolgens filters toepast op alle objecten.
# 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
Voorbeeld 17: FilterHashtable gebruiken om gebeurtenissen op te halen uit het toepassingslogboek
In dit voorbeeld wordt de parameter FilterHashtable gebruikt om gebeurtenissen op te halen uit het Application-logboek. De hashtabel maakt gebruik van sleutel/waarde paren. Zie Get-WinEvent-query's maken met FilterHashtable-voor meer informatie over de parameter FilterHashtable. Zie about_Hash_Tablesvoor meer informatie over hashtabellen.
$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }
De cmdlet Get-Date
maakt gebruik van de methode AddDays om een datum op te halen die twee dagen vóór de huidige datum valt. Het datumobject wordt opgeslagen in de variabele $Date
.
De Get-WinEvent
cmdlet haalt logboekgegevens op. De parameter FilterHashtable wordt gebruikt om de uitvoer te filteren. De LogName-sleutel geeft de waarde op als het Application-logboek. De StartTime--sleutel gebruikt de waarde die is opgeslagen in de variabele $Date
. De -id--sleutel maakt gebruik van een waarde voor de gebeurtenis-id, 1003.
Voorbeeld 18: FilterHashtable gebruiken om toepassingsfouten op te halen
In dit voorbeeld wordt de parameter FilterHashtable gebruikt om internet explorer-toepassingsfouten te vinden die in de afgelopen week zijn opgetreden.
$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
Logname='Application'
ProviderName='Application Error'
Data='iexplore.exe'
StartTime=$StartTime
}
De cmdlet Get-Date
maakt gebruik van de methode AddDays om een datum op te halen die zeven dagen vóór de huidige datum valt. Het datumobject wordt opgeslagen in de variabele $StartTime
.
De Get-WinEvent
cmdlet haalt logboekgegevens op. De parameter FilterHashtable wordt gebruikt om de uitvoer te filteren. De LogName-sleutel geeft de waarde op als het Application-logboek. De ProviderName--sleutel maakt gebruik van de waarde, toepassingsfout. Dit is de bronvan de gebeurtenis. De sleutel Data gebruikt de waarde iexplore.exe De StartTime--sleutel gebruikt de waarde die is opgeslagen in $StartTime
variabele.
Voorbeeld 19: SuppressHashFilter gebruiken om toepassingsfouten te filteren
Net als in voorbeeld 16 hierboven gebruikt dit voorbeeld de parameter FilterHashtable om gebeurtenissen op te halen uit het Application-logboek. We voegen echter de SuppressHashFilter- sleutel toe om gebeurtenissen op informatieniveau uit te filteren.
$Date = (Get-Date).AddDays(-2)
$filter = @{
LogName='Application'
StartTime=$Date
SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter
In dit voorbeeld haalt Get-WinEvent
alle gebeurtenissen op uit het Application-logboek voor de afgelopen twee dagen, met uitzondering van gebeurtenissen met een niveau van 4 (informatie).
Parameters
-ComputerName
Hiermee geeft u de naam op van de computer die met deze cmdlet gebeurtenissen ophaalt uit de gebeurtenislogboeken. Typ de NetBIOS-naam, een IP-adres of de FQDN (Fully Qualified Domain Name) van de computer. De standaardwaarde is de lokale computer, localhost. Deze parameter accepteert slechts één computernaam tegelijk.
Als u gebeurtenislogboeken van externe computers wilt ophalen, configureert u de firewallpoort voor de gebeurtenislogboekservice om externe toegang toe te staan.
Deze cmdlet is niet afhankelijk van externe communicatie met PowerShell. U kunt de parameter ComputerName gebruiken, zelfs als uw computer niet is geconfigureerd voor het uitvoeren van externe opdrachten.
Type: | String |
Aliassen: | Cn |
Position: | Named |
Default value: | Local computer |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Credential
Hiermee geeft u een gebruikersaccount op dat gemachtigd is om deze actie uit te voeren. De standaardwaarde is de huidige gebruiker.
Typ een gebruikersnaam, zoals User01 of Domain01\User01. U kunt ook een PSCredential--object invoeren, zoals een object dat is gegenereerd door de Get-Credential
-cmdlet. Als u een gebruikersnaam typt, wordt u om een wachtwoord gevraagd. Als u alleen de parameternaam typt, wordt u gevraagd om zowel een gebruikersnaam als een wachtwoord.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-FilterHashtable
Hiermee geeft u een query in hash-tabelindeling op om gebeurtenissen te selecteren in een of meer gebeurtenislogboeken. De query bevat een hash-tabel met een of meer sleutel/waarde paren.
Hash-tabelquery's hebben de volgende regels:
- Sleutels en waarden zijn niet hoofdlettergevoelig.
- Jokertekens zijn alleen geldig in de waarden die zijn gekoppeld aan de LogName en ProviderName sleutels.
- Elke sleutel kan slechts één keer in elke hashtabel worden vermeld.
- De waarde pad neemt paden naar
.etl
,.evt
en.evtx
logboekbestanden. - De LogName, Pathen ProviderName- sleutels kunnen in dezelfde query worden gebruikt.
- De UserID-sleutel kan een geldige beveiligings-id (SID) of een domeinnaam gebruiken die kan worden gebruikt om een geldig System.Security.Principal.NTAccount-objectte maken.
- De waarde Data neemt gebeurtenisgegevens in een veld zonder naam. Bijvoorbeeld gebeurtenissen in klassieke gebeurtenislogboeken.
-
<named-data>
sleutel vertegenwoordigt een benoemd gebeurtenisgegevensveld.
Wanneer Get-WinEvent
een sleutel/waarde paar niet kan interpreteren, wordt de sleutel geïnterpreteerd als een hoofdlettergevoelige naam voor de gebeurtenisgegevens in de gebeurtenis.
De geldige Get-WinEvent
sleutel/waarde paren zijn als volgt:
-
LogName-=
<String[]>
-
ProviderName-=
<String[]>
-
pad=
<String[]>
-
trefwoorden=
<Long[]>
-
-id=
<Int32[]>
-
niveau=
<Int32[]>
-
StartTime-=
<DateTime>
-
EndTime-=
<DateTime>
-
UserID-=
<SID>
-
Gegevens=
<String[]>
<named-data>
=<String[]>
-
SuppressHashFilter-=
<Hashtable>
Type: | Hashtable[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-FilterXml
Hiermee geeft u een gestructureerde XML-query op die met deze cmdlet gebeurtenissen uit een of meer gebeurtenislogboeken worden geselecteerd.
Als u een geldige XML-query wilt genereren, gebruikt u de Aangepaste weergave maken en huidige logboeken filteren functies in Windows Logboeken. Gebruik de items in het dialoogvenster om een query te maken en klik vervolgens op het tabblad XML om de query in XML-indeling weer te geven. U kunt de XML van het tabblad XML kopiëren naar de waarde van de parameter FilterXml. Zie Help voor Logboeken voor meer informatie over de functies van Logboeken.
Gebruik een XML-query om een complexe query te maken die verschillende XPath-instructies bevat. Met de XML-indeling kunt u ook een XML--element onderdrukken waarmee gebeurtenissen van de query worden uitgesloten. Zie Queryschema en de sectie XML-gebeurtenisquery's van gebeurtenisselectievoor meer informatie over het XML-schema voor gebeurtenislogboekquery's.
U kunt ook een element Onderdrukken maken met behulp van de parameter FilterHashtable.
Type: | XmlDocument |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-FilterXPath
Hiermee geeft u een XPath-query op die door deze cmdlet gebeurtenissen uit een of meer logboeken worden geselecteerd.
Zie XPath Reference en de sectie Selectiefilters van Gebeurtenisselectievoor meer informatie over de XPath-taal.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Force
Haalt foutopsporings- en analyselogboeken op, naast andere gebeurtenislogboeken. De parameter Forceren is vereist om een foutopsporings- of analyselogboek op te halen wanneer de waarde van de naamparameter jokertekens bevat.
De Get-WinEvent
cmdlet sluit deze logboeken standaard uit, tenzij u de volledige naam van een foutopsporings- of analyselogboek opgeeft.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-ListLog
Hiermee geeft u de gebeurtenislogboeken. Voer de namen van gebeurtenislogboeken in een door komma's gescheiden lijst in. Jokertekens zijn toegestaan. Als u alle logboeken wilt ophalen, gebruikt u het sterretje (*
) jokerteken.
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-ListProvider
Hiermee geeft u de gebeurtenislogboekproviders op die deze cmdlet ophaalt. Een gebeurtenislogboekprovider is een programma of service waarmee gebeurtenissen naar het gebeurtenislogboek worden geschreven.
Voer de providernamen in een door komma's gescheiden lijst in. Jokertekens zijn toegestaan. Gebruik het sterretje (*
) om de providers van alle gebeurtenislogboeken op de computer op te halen.
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-LogName
Hiermee geeft u de gebeurtenislogboeken op waaruit met deze cmdlet gebeurtenissen worden opgehaald. Voer de namen van gebeurtenislogboeken in een door komma's gescheiden lijst in. Jokertekens zijn toegestaan. U kunt ook logboeknamen doorsluisen naar de Get-WinEvent
cmdlet.
Notitie
PowerShell beperkt niet de hoeveelheid logboeken die u kunt aanvragen. De Get-WinEvent
cmdlet voert echter een query uit op de Windows-API met een limiet van 256. Hierdoor kan het lastig zijn om al uw logboeken tegelijk te filteren. U kunt dit omzeilen door een foreach
lus te gebruiken om elk logboek als volgt te doorlopen: Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | True |
-MaxEvents
Hiermee geeft u het maximum aantal gebeurtenissen op dat wordt geretourneerd. Voer een geheel getal in, zoals 100. Standaard worden alle gebeurtenissen in de logboeken of bestanden geretourneerd.
Type: | Int64 |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Oldest
Geef aan dat deze cmdlet de gebeurtenissen in de oudste volgorde ophaalt. Standaard worden gebeurtenissen geretourneerd in nieuwste volgorde.
Deze parameter is vereist om gebeurtenissen op te halen uit .etl
- en .evt
-bestanden en uit foutopsporings- en analyselogboeken. In deze bestanden worden gebeurtenissen vastgelegd in de oudste volgorde en kunnen de gebeurtenissen alleen in oudste volgorde worden geretourneerd.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Path
Hiermee geeft u het pad naar de gebeurtenislogboekbestanden waaruit deze cmdlet gebeurtenissen op te halen. Voer de paden naar de logboekbestanden in een door komma's gescheiden lijst in of gebruik jokertekens om bestandspadpatronen te maken.
Get-WinEvent
ondersteunt bestanden met de bestandsextensies .evt
, .evtx
en .etl
. U kunt gebeurtenissen uit verschillende bestanden en bestandstypen opnemen in dezelfde opdracht.
Type: | String[] |
Aliassen: | PSPath |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | True |
-ProviderName
Hiermee geeft u, als tekenreeksmatrix, de gebeurtenislogboekproviders van waaruit deze cmdlet gebeurtenissen ophaalt. Voer de providernamen in een door komma's gescheiden lijst in of gebruik jokertekens om providernaampatronen te maken.
Een gebeurtenislogboekprovider is een programma of service waarmee gebeurtenissen naar het gebeurtenislogboek worden geschreven. Het is geen PowerShell-provider.
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | True |
Invoerwaarden
System.String, System.Xml.XmlDocument, System.Collections.Hashtable
U kunt een LogName- (tekenreeks), een FilterXML--query of een FilterHashtable- query naar Get-WinEvent
.
Uitvoerwaarden
System.Diagnostics.Eventing.Reader.EventLogConfiguration, System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics.Eventing.Reader.ProviderMetadata
Met de parameter ListLog retourneert Get-WinEvent
System.Diagnostics.Eventing.Reader.EventLogConfiguration-objecten.
Met de parameter
Met alle andere parameters retourneert Get-WinEvent
System.Diagnostics.Eventing.Reader.EventLogRecord objecten.
Notities
Get-WinEvent
is ontworpen om de Get-EventLog
cmdlet te vervangen op computers met Windows Vista en latere versies van Windows.
Get-EventLog
ontvangt alleen gebeurtenissen in klassieke gebeurtenislogboeken.
Get-EventLog
wordt bewaard voor achterwaartse compatibiliteit.
De cmdlets Get-WinEvent
en Get-EventLog
worden niet ondersteund in Windows Pre-installation Environment (Windows PE).