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 systeem - en toepassingslogboeken . 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). Retourneert standaard Get-WinEvent
gebeurtenisgegevens in de volgorde van nieuwste naar oudste.
Get-WinEvent
bevat gebeurtenislogboeken en gebeurtenislogboekproviders. Druk op Ctrl+C om de opdracht te onderbreken. 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
hiermee 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 worden opgeslagen. Klassieke logboeken worden eerst opgehaald, gevolgd door de nieuwe Windows-gebeurtenislogboeken.
Het is mogelijk dat recordcount van een logboek null is, wat leeg is 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 installatielogboek 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 installatielogboek op te geven. Het object wordt naar de pijplijn verzonden naar de Format-List
cmdlet. 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 beveiligingslogboek 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 beveiligingslogboek 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 beveiligingslogboek 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 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 aan om de logboeken op te halen 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 gebeurtenislogboeken van de toepassing vertegenwoordigen op drie computers: Server01, Server02 en Server03. Het Trefwoord ForEach wordt gebruikt omdat de parameter ComputerName slechts één waarde accepteert. Zie about_Foreach voor 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
De variabele $S
slaat de namen drie servers op: Server01, Server02 en Server03. De ForEach-instructie maakt gebruik van een lus om elke server te verwerken. ($Server in $S)
Het scriptblok in de accolades ({ }
) voert de Get-WinEvent
opdracht uit. De parameter ListLog geeft het toepassingslogboek 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
haalt de eigenschappen LogMode, MaximumSizeInBytes, RecordCount, LogName en gebruikt een berekende expressie om de ComputerName weer te geven met behulp van de $Server
variabele. De objecten worden naar de pijplijn verzonden naar de Format-Table
cmdlet om de uitvoer weer te geven in de PowerShell-console. De parameter AutoSize 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 naam de provider en LogLinks is 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 toepassingslogboek 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 maakt gebruik van de toepassing om objecten voor dat logboek op te halen. ProviderNames is een eigenschap van het object en geeft de providers weer die naar het toepassingslogboek 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 maakt gebruik van het jokerteken sterretje (*
) om Beleid 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 Gebeurtenissen om objecten op te halen. De objecten worden via de pijplijn naar de Format-Table
cmdlet verzonden. Format-Table
geeft de id en beschrijving van de gebeurtenisobjecten weer.
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 op 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. De eigenschap Aantal van $Event
geeft het totale aantal vastgelegde gebeurtenissen weer.
De $Event
variabele wordt via de pijplijn naar de Group-Object
cmdlet verzonden. 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. Met de parameter NoElement worden andere eigenschappen uit de uitvoer van de objecten verwijderd. De gegroepeerde objecten worden via de pijplijn naar de Sort-Object
cmdlet verzonden. Sort-Object
gebruikt de parameter Eigenschap om de objecten te sorteren op aantal. De parameter Aflopend geeft de uitvoer weer op aantal, van hoog naar laag. In de uitvoer bevat de kolom Aantal het totale aantal gebeurtenissen. De kolom Naam bevat de gegroepeerde gebeurtenis-id-nummers.
De $Event
variabele wordt via de pijplijn naar de Group-Object
cmdlet verzonden. 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.
Met de parameter NoElement worden andere eigenschappen uit de uitvoer verwijderd. In de uitvoer bevat de kolom Aantal het totale aantal gebeurtenissen. De kolom Naam 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. Met de parameter NoElement worden andere eigenschappen uit de uitvoer verwijderd. De gegroepeerde objecten worden via de pijplijn naar de Format-Table
cmdlet verzonden. Format-Table
gebruikt de parameter AutoSize om de kolommen op te maken. De kolom Aantal bevat het totale aantal gebeurtenissen. De kolom Naam bevat de gegroepeerde LevelDisplayName en LogName.
Voorbeeld 12: Gebeurtenissen ophalen uit een gearchiveerd gebeurtenislogboek
Get-WinEvent
kan 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 padparameter 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
heeft parameters 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. Met de parameter Path geeft u 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, dus 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 padparameter geeft de map en bestandsnaam op. De oudste parameter wordt gebruikt voor het uitvoeren van gebeurtenissen in de volgorde waarin ze zijn geschreven, oudste naar nieuwste. De objecten worden naar de pijplijn verzonden naar de Sort-Object
cmdlet Sort-Object
en sorteert de objecten in aflopende volgorde 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 , EventLogRecord, bevatten, kunt u ze filteren met dezelfde eigenschappen. Voor de opdracht is de oudste parameter vereist, omdat deze wordt gelezen uit een .etl
bestand, maar de oudste parameter 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 bestandsmap en bestandsnaam op te geven. De oudste parameter wordt gebruikt voor het uitvoeren van gebeurtenissen in de volgorde waarin ze zijn geschreven, oudste naar nieuwste. 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. Al deze opdrachten krijgen gebeurtenissen die in de afgelopen 24 uur zijn opgetreden vanuit het Windows PowerShell-gebeurtenislogboek .
De filtermethoden zijn efficiënter dan het gebruik van de Where-Object
cmdlet. Filters worden toegepast wanneer de objecten worden opgehaald. Where-Object
haalt alle objecten op en past vervolgens filters toe 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 toepassingslogboek . De hash-tabel maakt gebruik van sleutel-/waardeparen . Zie Get-WinEvent-query's maken met FilterHashtable voor meer informatie over de parameter FilterHashtable. Zie about_Hash_Tables voor meer informatie over hashtabellen.
$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }
De Get-Date
cmdlet gebruikt de methode AddDays om een datum op te halen die twee dagen vóór de huidige datum valt. Het datumobject wordt opgeslagen in de $Date
variabele.
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 toepassingslogboek . De StartTime-sleutel gebruikt de waarde die is opgeslagen in de $Date
variabele. 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 Get-Date
cmdlet gebruikt de methode AddDays om een datum op te halen die zeven dagen vóór de huidige datum valt. Het datumobject wordt opgeslagen in de $StartTime
variabele.
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 toepassingslogboek . De ProviderName-sleutel maakt gebruik van de waarde, Toepassingsfout, de bron van de gebeurtenis. De gegevenssleutel gebruikt de waarde iexplore.exe De StartTime-sleutel gebruikt de waarde die is opgeslagen in $StartTime
de variabele.
Voorbeeld 19: SuppressHashFilter gebruiken om toepassingsfouten te filteren
Net als in voorbeeld 16 hierboven wordt in dit voorbeeld de parameter FilterHashtable gebruikt om gebeurtenissen op te halen uit het toepassingslogboek . We voegen echter de sleutel SuppressHashFilter toe om gebeurtenissen op informatieniveau te filteren.
$Date = (Get-Date).AddDays(-2)
$filter = @{
LogName='Application'
StartTime=$Date
SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter
In dit voorbeeld Get-WinEvent
worden alle gebeurtenissen uit het toepassingslogboek opgehaald voor de afgelopen twee dagen, met uitzondering van gebeurtenissen met niveau 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 zelfs gebruiken 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-waardeparen .
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 sleutels LogName en ProviderName .
- Elke sleutel kan slechts één keer in elke hashtabel worden vermeld.
- De padwaarde neemt paden naar
.etl
,.evt
en.evtx
logboekbestanden. - De sleutels LogName, Pad en ProviderName kunnen in dezelfde query worden gebruikt.
- De UserID-sleutel kan een geldige beveiligings-id (SID) of een domeinnaam hebben die kan worden gebruikt om een geldig System.Security.Principal.NTAccount-object te maken.
- De waarde Gegevens neemt gebeurtenisgegevens in een veld zonder naam. Bijvoorbeeld gebeurtenissen in klassieke gebeurtenislogboeken.
<named-data>
sleutel vertegenwoordigt een benoemd gebeurtenisgegevensveld.
Wanneer Get-WinEvent
een sleutel/waardepaar niet kan worden geïnterpreteerd, wordt de sleutel geïnterpreteerd als een hoofdlettergevoelige naam voor de gebeurtenisgegevens in de gebeurtenis.
De geldige Get-WinEvent
sleutel-/waardeparen zijn als volgt:
- LogName=
<String[]>
- ProviderName=
<String[]>
- Pad=
<String[]>
- Zoekwoorden=
<Long[]>
- Id=
<Int32[]>
- Niveau=
<Int32[]>
- StartTime=
<DateTime>
- EndTime=
<DateTime>
- UserID=
<SID>
- Data=
<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 functies Aangepaste weergave maken en huidige logboeken filteren 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 Logboeken Help voor meer informatie over de Logboeken-functies.
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 gebruiken dat gebeurtenissen uit de query uitsluit. Zie het gedeelte Queryschema en de sectie XML-gebeurtenisquery's van gebeurtenisselectie voor 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-verwijzing en de sectie Selectiefilters van Gebeurtenisselectie voor 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 Force is vereist om een foutopsporings- of analyselogboek op te halen wanneer de waarde van de naamparameter jokertekens bevat.
De cmdlet sluit deze logboeken standaard Get-WinEvent
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 voor het ophalen van gebeurtenissen 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 .evt
, .evtx
en .etl
bestandsnaamextensies. 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
U kunt een LogName (tekenreeks) doorsluisen naar deze cmdlet.
U kunt een FilterXML-query doorsluisen naar deze cmdlet.
U kunt een FilterHashtable-query doorsluisen naar deze cmdlet.
Uitvoerwaarden
Met de parameter ListLog retourneert deze cmdlet EventLogConfiguration-objecten .
Deze cmdlet retourneert standaard EventLogRecord-objecten .
Met de parameter ListProvider retourneert deze cmdlet ProviderMetadata-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
haalt gebeurtenissen alleen op in klassieke gebeurtenislogboeken. Get-EventLog
wordt bewaard voor compatibiliteit met eerdere versies.
De Get-WinEvent
en Get-EventLog
cmdlets worden niet ondersteund in Windows Pre-installation Environment (Windows PE).