Delen via


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 $Eventwordt 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, .evten .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-WinEventsleutel/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, .evtxen .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-WinEventSystem.Diagnostics.Eventing.Reader.EventLogConfiguration-objecten.

Met de parameter ListProvider retourneert System.Diagnostics.Eventing.Reader.ProviderMetadata-objecten.

Met alle andere parameters retourneert Get-WinEventSystem.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).