Get-WinEvent

Hiermee haalt u gebeurtenissen op uit gebeurtenislogboeken en logboekbestanden voor gebeurtenistracering op lokale en externe computers.

Syntax

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 uitvoert als een Beheer istrator, 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 $Eventgeeft 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
Aliases:Cn
Position:Named
Default value:Local computer
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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, .evten .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-WinEventsleutel-/waardeparen zijn als volgt:

  • LogName=<String[]>
  • ProviderName=<String[]>
  • Pad=<String[]>
  • Zoekwoorden=<Long[]>
  • Id=<Int32[]>
  • Niveau=<Int32[]>
  • Starttime=<DateTime>
  • Eindtijd=<DateTime>
  • UserID=<SID>
  • Data=<String[]>
  • <named-data>=<String[]>
  • SuppressHashFilter=<Hashtable>
Type:Hashtable[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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
Required:True
Accept pipeline input:False
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Required:True
Accept pipeline input:False
Accept wildcard characters: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
Required:True
Accept pipeline input:False
Accept wildcard characters: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
Required:False
Accept pipeline input:True
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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, .evtxen .etl bestandsnaamextensies. U kunt gebeurtenissen uit verschillende bestanden en bestandstypen opnemen in dezelfde opdracht.

Type:String[]
Aliases:PSPath
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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
Required:True
Accept pipeline input:True
Accept wildcard characters:True

Invoerwaarden

String

U kunt een LogName (tekenreeks) doorsluisen naar deze cmdlet.

XmlDocument

U kunt een FilterXML-query doorsluisen naar deze cmdlet.

Hashtable

U kunt een FilterHashtable-query doorsluisen naar deze cmdlet.

Uitvoerwaarden

EventLogConfiguration

Met de parameter ListLog retourneert deze cmdlet EventLogConfiguration-objecten .

EventLogRecord

Deze cmdlet retourneert standaard EventLogRecord-objecten .

ProviderMetadata

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