Ottiene eventi dai registri eventi e dai file di registro di traccia eventi nei computer locali e remoti.

Sintassi

Get-WinEvent [-LogName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent [-Path] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent [-ProviderName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent -FilterHashTable <Hashtable[]> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent [-ListLog] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]

Get-WinEvent [-ListProvider] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]

Get-WinEvent -FilterXml <XmlDocument> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Descrizione

Il cmdlet Get-WinEvent ottiene eventi dai registri eventi, inclusi i registri classici, ad esempio i registri eventi di sistema e delle applicazioni e i registri eventi generati dalla nuova tecnologia Registro eventi di Windows introdotta in Windows Vista. Ottiene inoltre eventi nei file di registro generati da Traccia eventi per Windows (ETW).

Senza parametri, un comando Get-WinEvent ottiene tutti gli eventi da tutti i registri eventi nel computer. Per interrompere il comando, premere CTRL+C.

Get-WinEvent elenca inoltre i registri eventi e i provider dei registri eventi. È possibile ottenere eventi da registri selezionati o generati dai provider di eventi selezionati. È inoltre possibile combinare eventi ottenuti da più origini in un solo comando. Get-WinEvent consente di filtrare eventi tramite query XPath, query XML strutturate e query della tabella hash semplificate.

Nota: Get-WinEvent richiede Windows Vista, Windows Server 2008 R2 o versioni successive di Windows. Richiede inoltre Microsoft .NET Framework 3.5 o versioni successive.

Parametri

-ComputerName <string>

Ottiene eventi dai registri eventi nel computer specificato. Digitare il nome NetBIOS, un indirizzo IP (Internet Protocol) o il nome di dominio completo del computer. Il valore predefinito è il computer locale.

Questo parametro accetta un solo nome di computer alla volta. Per trovare i registri eventi su più computer, utilizzare un'istruzione ForEach. Per ulteriori informazioni su questo parametro, vedere gli esempi.

Per ottenere eventi e registri eventi da computer remoti, è necessario che la porta del firewall per il servizio del registro eventi sia configurata per consentire l'accesso remoto.

Questo parametro non si basa sulla comunicazione remota di Windows PowerShell. È possibile utilizzare il parametro ComputerName anche se il computer non è configurato per l'esecuzione di comandi remoti.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Credential <PSCredential>

Specifica un account utente con autorizzazione per l'esecuzione di questa azione. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio Utente01 o Dominio01\Utente01. In alternativa, immettere un oggetto PSCredential, ad esempio quello generato dal cmdlet Get-Credential. Se si digita un nome utente, viene richiesta una password. Se si digita solo il nome del parametro, vengono richiesti sia un nome utente sia una password.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Current user

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-FilterHashTable <Hashtable[]>

Utilizza una query in formato di tabella hash per selezionare eventi da uno o più registri eventi. La query contiene una tabella hash con una o più coppie chiave-valore.

Le query della tabella hash dispongono delle regole seguenti:

-- Chiavi e valori non rilevano la distinzione tra maiuscole e minuscole.

-- I caratteri jolly sono validi solo nei valori associati alle chiavi LogName e ProviderName.

-- Ogni chiave può essere elencata una sola volta in ciascuna tabella hash.

-- Il valore Path accetta i percorsi dei file di registro con estensione etl, evt ed evtx.

-- È possibile utilizzare le chiavi LogName, Path e ProviderName nella stessa query.

-- La chiave UserID può accettare un ID di sicurezza (SID) valido o il nome di un account di dominio che può essere utilizzato per creare un oggetto System.Security.Principal.NTAccount valido.

-- Il valore Data accetta dati evento in un campo senza nome. Ciò è valido per gli eventi nei registri eventi classici.

-- La chiave * rappresenta un campo dati evento con nome.

Quando per Get-WinEvent non è possibile interpretare una coppia chiave-valore, la chiave viene interpretata come nome con distinzione tra maiuscole e minuscole per i dati evento nell'evento.

Le coppie chiave-valore valide sono come segue:

-- LogName=<String[]>

-- ProviderName=<String[]>

-- Path=<String[]>

-- Keywords=<Long[]>

-- ID=<Int32[]>

-- Level=<Int32[]>

-- StartTime=<DateTime>

-- EndTime=<DataTime>

-- UserID=<SID>

-- Data=<String[]>

-- *=<String[]>

Obbligatorio?

true

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

false

-FilterXml <XmlDocument>

Utilizza una query XML strutturata per selezionare eventi da uno o più registri eventi.

Per generare una query XML valida, utilizzare le funzionalità Crea visualizzazione personalizzata e Filtro registro corrente nel Visualizzatore eventi. Utilizzare gli elementi nella finestra di dialogo per creare una query, quindi fare clic sulla scheda XML per visualizzare la query in formato XML. È possibile copiare l'XML dalla scheda XML nel valore del parametro FilterXml. Per ulteriori informazioni sulle funzionalità del Visualizzatore, vedere la Guida del Visualizzatore eventi.

In genere, si utilizza una query XML per creare una query complessa che contiene diverse istruzioni XPath. Il formato XML consente inoltre di utilizzare un elemento XML "Elimina" che esclude gli eventi dalla query. Per ulteriori informazioni sullo schema XML per le query del registro eventi, vedere gli argomenti seguenti in MSDN Library.

-- "Query Schema": https://go.microsoft.com/fwlink/?LinkId=143685

-- "XML Event Queries" in "Event Selection": https://go.microsoft.com/fwlink/?LinkID=143608

Obbligatorio?

true

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

false

-FilterXPath <string>

Utilizza una query XPath per selezionare eventi da uno o più registri.

Per ulteriori informazioni sul linguaggio XPath, vedere "Selection Filters" in "Event Selection" e "XPath Reference" in MSDN Library.

Obbligatorio?

false

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Force <switch>

Ottiene i registri analitici e di debug, oltre ad altri registri eventi. Il parametro Force è necessario per ottenere un registro di debug o analitico quando il valore del parametro Name include caratteri jolly.

Per impostazione predefinita, in Get-WinEvent questi registri vengono esclusi, a meno che non si specifichi in modo esplicito il nome completo di un registro analitico o di debug.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Debugging and analytic logs are not returned in response to queries that use wildcard characters.

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-ListLog <string[]>

Ottiene i registri eventi specificati. Immettere i nomi dei registri eventi in un elenco con valori delimitati da virgole. È consentito l'utilizzo di caratteri jolly. Per ottenere tutti i registri, immettere il valore *.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-ListProvider <string[]>

Ottiene i provider dei registri eventi specificati. Un provider del registro eventi è un programma o un servizio che scrive eventi nel registro eventi.

Immettere i nomi dei provider in un elenco con valori delimitati da virgole. È consentito l'utilizzo di caratteri jolly. Per ottenere i provider di tutti i registri eventi nel computer, immettere il valore *.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-LogName <string[]>

Ottiene eventi da registri eventi specificati. Immettere i nomi dei registri eventi in un elenco con valori delimitati da virgole. È consentito l'utilizzo di caratteri jolly. È inoltre possibile reindirizzare i nomi di registro a Get-WinEvent.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

true

-MaxEvents <int64>

Specifica il numero massimo di eventi restituiti da Get-WinEvent. Immettere un valore intero. Per impostazione predefinita vengono restituiti tutti gli eventi nei registri o file.

Obbligatorio?

false

Posizione?

named

Valore predefinito

All events

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Oldest

Restituisce gli eventi a partire dal meno recente. Per impostazione predefinita gli eventi vengono restituiti a partire dal più recente.

Questo parametro è obbligatorio per ottenere eventi dai file con estensione etl ed evt e dai registri analitici e di debug. In questi file gli eventi vengono registrati a partire dal meno recente e possono essere restituiti solo in tale ordine.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Path <string[]>

Ottiene eventi dai file dei registri eventi specificati. Immettere i percorsi dei file di registro in un elenco con valori delimitati da virgole oppure utilizzare caratteri jolly per creare criteri dei percorsi dei file.

Get-WinEvent supporta file con estensione evt, evtx ed etl. È possibile includere eventi da file e tipi di file diversi nello stesso comando.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-ProviderName <string[]>

Ottiene eventi scritti dai provider dei registri eventi specificati. Immettere i nomi dei provider in un elenco con valori delimitati da virgole oppure utilizzare caratteri jolly per creare criteri dei nome dei provider.

Un provider del registro eventi è un programma o un servizio che scrive eventi nel registro eventi. Non è un provider di Windows PowerShell.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.String, System.Xml.XmlDocument, System.Collections.Hashtable.

È possibile reindirizzare un LogName (stringa), una query FilterXML o una query FilterHashTable a Get-WinEvent.

Output

System.Diagnostics.Eventing.Reader.EventLogConfiguration, System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics.Eventing.Reader.ProviderMetadata

Con il parametro ListLog, Get-WinEvent restituisce oggetti System.Diagnostics.Eventing.Reader.EventLogConfiguration. Con il parametro ListProvider, Get-WinEvent restituisce oggetti System.Diagnostics.Eventing.Reader.ProviderMetadata. Con tutti gli altri parametri, Get-WinEvent restituisce oggetti System.Diagnostics.Eventing.Reader.EventLogRecord.

Note

Get-WinEvent è progettato per sostituire il cmdlet Get-EventLog nei computer in cui è in esecuzione Windows Vista e versioni successive di Windows. Get-EventLog ottiene eventi solo in registri eventi classici. Get-EventLog viene mantenuto in Windows PowerShell 2.0 per i sistemi precedenti a Windows Vista.

Esempio 1

C:\PS>get-winevent -listlog  *

Descrizione
-----------
Questo comando ottiene tutti i registri nel computer locale.
    
I registri vengono elencati nell'ordine in cui vengono ottenuti da Get-WinEvent. In genere, i registri classici vengono restituiti per primi, seguiti dai nuovi registri degli eventi di Windows.
    
Poiché sono generalmente presenti più di cento registri eventi, questo parametro richiede un nome di registro o un criterio del nome. Per ottenere tutti i registri, utilizzare *.






Esempio 2

C:\PS>get-winevent -listlog Setup | format-list -property *

    
    FileSize                       : 69632
    IsLogFull                      : False
    LastAccessTime                 : 2/14/2008 12:55:12 AM
    LastWriteTime                  : 7/9/2008 3:12:05 AM
    OldestRecordNumber             : 1
    RecordCount                    : 3
    LogName                        : Setup
    LogType                        : Operational
    LogIsolation                   : Application
    IsEnabled                      : True
    IsClassicLog                   : False
    SecurityDescriptor             : O:BAG:SYD:(A;;0xf0007;;;SY)(A;
                                     (A;;0x1;;;S-1-5-32-573)
    LogFilePath                    : %SystemRoot%\System32\Winevt\L
    MaximumSizeInBytes             : 1052672
    LogMode                        : Circular
    OwningProviderName             : Microsoft-Windows-Eventlog
    ProviderNames                  : {Microsoft-Windows-WUSA, Micro
    ProviderLevel                  :
    ProviderKeywords               :
    ProviderBufferSize             : 64
    ProviderMinimumNumberOfBuffers : 0
    ProviderMaximumNumberOfBuffers : 64
    ProviderLatency                : 1000
    ProviderControlGuid            :

Descrizione
-----------
Questi comandi ottengono un oggetto che rappresenta il registro eventi di sistema classico nel computer locale. L'oggetto include informazioni utili sul registro, comprese le dimensioni, il provider del registro eventi, il percorso del file e se è attivato.






Esempio 3

C:\PS>get-winevent -listlog * -computername Server01| where {$_.recordcount}

Descrizione
-----------
Questo comando ottiene i registri eventi solo nel computer Server01 che contiene gli eventi. Molti registri potrebbero essere vuoti. 
    
Il comando utilizza la proprietà RecordCount dell'oggetto EventLogConfiguration restituito da Get-WinEvent quando si utilizza il parametro ListLog.






Esempio 4

C:\PS>$s = "Server01", "Server02", "Server03"

C:\PS> foreach ($server in $s) 
     {$server; get-winevent -listlog "Windows PowerShell" -computername $server}

Descrizione
-----------
I comandi in questo esempio ottengono gli oggetti che rappresentano i registri eventi di Windows PowerShell nei computer Server01, Server02 e Server03. Questo comando utilizza la parola chiave Foreach perché il parametro ComputerName accetta un solo valore.
    
Il primo comando salva i nomi dei computer nella variabile $s.
    
Il secondo comando utilizza un'istruzione Foreach. Per ciascuno dei computer nella variabile $s, esegue il comando nel blocco di script (tra parentesi graffe). Il comando stampa innanzitutto il nome del computer. Esegue quindi un comando Get-WinEvent per ottenere un oggetto che rappresenta il registro di Windows PowerShell.






Esempio 5

C:\PS>get-winevent -listprovider *

Descrizione
-----------
Questo comando ottiene i provider dei registri eventi nel computer locale e i registri in cui scrivono, se presenti.






Esempio 6

C:\PS>(get-winevent -listlog Application).providernames

Descrizione
-----------
Questo comando ottiene tutti i provider che scrivono nel registro applicazioni nel computer locale.






Esempio 7

C:\PS>>get-winevent -listprovider *policy*

Descrizione
-----------
Questo comando ottiene i provider dei registri eventi i cui nomi includono la parola "policy".






Esempio 8

C:\PS>(get-winevent -listprovider microsoft-windows-grouppolicy).events | format-table id, description -auto

Descrizione
-----------
Questo comando elenca gli ID evento generati dal provider di eventi Microsoft-Windows-GroupPolicy unitamente alla descrizione dell'evento.
    
Utilizza la proprietà Events dell'oggetto restituito da Get-WinEvent quando si utilizza il parametro ListProvider e le proprietà ID e Description dell'oggetto nella proprietà Events.






Esempio 9

C:\PS>$events = get-winevent -logname "Windows PowerShell"

C:\PS> $events.count
195
    
C:\PS> $events | group-object id -noelement | sort-object count -desc
Count Name
----- ----
  147 600
   22 400
   21 601
    3 403
    2 103
    
 C:\PS> $events | group-object leveldisplayname -noelement
Count Name
----- ----
    2 Warning
  193 Information

Descrizione
-----------
In questo esempio viene illustrato come utilizzare le proprietà degli oggetti evento restituiti da Get-WinEvent per ottenere ulteriori informazioni sugli eventi in un registro eventi.
    
Nel primo comando viene utilizzato il cmdlet Get-WinEvent per ottenere tutti gli eventi nel registro eventi di Windows PowerShell. Vengono quindi salvati nella variabile $events. Il nome del registro è racchiuso tra virgolette perché contiene uno spazio.
    
Nel secondo comando viene utilizzata la proprietà Count delle raccolte di oggetti per trovare il numero di voci nel registro eventi. 
    
Il terzo comando visualizza l'incidenza di ciascun evento nel registro, innanzitutto con gli eventi più frequenti. In questo esempio, l'ID evento 600 è l'evento più frequente.
    
Il quarto comando raggruppa gli elementi in base al valore della relativa proprietà LevelDisplayName per illustrare quanti eventi di errore, avviso e informazione sono presenti nel registro.






Esempio 10

C:\PS>get-winevent -logname *disk*, Microsoft-Windows-Kernel-WHEA

Descrizione
-----------
Questo comando ottiene gli eventi di errore i cui nomi includono "disk" da tutti i registri eventi del computer e dal registro eventi Microsoft-Windows-Kernel-WHEA.






Esempio 11

C:\PS>get-winevent -path 'c:\ps-test\Windows PowerShell.evtx'

Descrizione
-----------
Questo comando ottiene eventi da una copia del file del registro eventi di Windows PowerShell in una directory di prova. Il percorso è racchiuso tra virgolette perché il nome del registro contiene uno spazio.






Esempio 12

C:\PS>get-winevent -path 'c:\tracing\tracelog.etl' -maxevents 100 -oldest
    
C:\PS> get-winevent -path 'c:\tracing\tracelog.etl' -oldest | sort-object -property timecreated -desc | select-object -first 100

Descrizione
-----------
Questi comandi ottengono i primi 100 eventi da un file del registro di Traccia eventi per Windows (ETW).

Il primo comando ottiene i 100 eventi meno recenti nel log. Utilizza il cmdlet Get-WinEvent per ottenere eventi dal file Tracelog.etl. Utilizza il parametro MaxEvents per limitare il recupero a 100 eventi. Poiché gli eventi sono elencati nell'ordine in cui sono scritti nel log (dal meno recente), il parametro Oldest è obbligatorio.

Il secondo comando ottiene i 100 eventi più recenti nel log. Utilizza il cmdlet Get-WinEvent per ottenere tutti gli eventi dal file Tracing.etl. Gli eventi
vengono passati al cmdlet Sort-Object che li ordina in ordine decrescente in base al valore della proprietà TimeCreated. Gli eventi ordinati vengono quindi inviati al cmdlet Select-Object per selezionare i 100 eventi più recenti.






Esempio 13

C:\PS>get-winevent -path "c:\tracing\tracelog.etl", "c:\Logs\Windows PowerShell.evtx" -oldest | where {$_.id -eq "103"}

Descrizione
-----------
In questo esempio viene illustrato come ottenere gli eventi da un file di registro di traccia eventi (con estensione etl) e da una copia del file del registro di Windows PowerShell (con estensione evtx) salvata in una directory di prova.

È possibile combinare più tipi di file in un solo comando. Poiché i file contengono lo stesso tipo di oggetto .NET Framework (un oggetto EventLogRecord), è possibile utilizzare le stesse proprietà per filtrarli.

Si noti che il comando richiede il parametro Oldest perché esegue la lettura da un file con estensione etl, ma il parametro Oldest si applica a entrambi i file.






Esempio 14

C:\PS># Use the Where-Object cmdlet
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -logname "Windows PowerShell" | where {$_.timecreated -ge $yesterday}


# Uses FilterHashTable
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -FilterHashTable @{LogName='Windows PowerShell'; Level=3; StartTime=$yesterday}


# Use FilterXML
C:\PS> get-winevent -FilterXML "<QueryList><Query><Select Path='Windows PowerShell'>*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select></Query></QueryList>"


# Use FilterXPath
C:\PS> get-winevent -LogName "Windows Powershell" -FilterXPath "*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]"

Descrizione
-----------
In questo esempio vengono illustrati diversi metodi di filtro per la selezione di eventi da un registro eventi. Tutti questi comandi ottengono gli eventi che si sono verificati nelle ultime 24 ore dal registro eventi di Windows Powershell.

I metodi dei filtri sono più efficienti dell'utilizzo del cmdlet Where-Object perché i filtri vengono applicati mentre vengono recuperati gli oggetti, piuttosto che recuperare tutti gli oggetti e poi filtrarli.

Poiché le date sono difficili da formulare nei formati XML e XPath, per creare il contenuto XML per la data, viene utilizzata la funzionalità Filtro registro corrente del Visualizzatore eventi. Per ulteriori informazioni su questa funzionalità, vedere la Guida del Visualizzatore eventi.






Esempio 15

C:\PS>$date = (get-date).AddDays(-2)
    
C:\PS> $events = get-winevent -FilterHashTable @{ logname = "Microsoft-Windows-Diagnostics-Performance/Operational"; StartTime = $date; ID = 100 }

Descrizione
-----------
In questo esempio viene utilizzata una tabella hash del filtro per ottenere eventi dal registro delle prestazioni. 
    
Il primo comando utilizza il cmdlet Get-Date e il metodo AddDays per ottenere una data che precede di due giorni la data corrente. La data viene salvata nella variabile $date.
    
Nel secondo comando viene utilizzato il cmdlet Get-WinEvent con il parametro FilterHashTable. Le chiavi nella tabella hash definiscono un filtro che seleziona nel registro delle prestazioni eventi che si sono verificati negli ultimi due giorni e che presentano un ID evento 100. 
    
La chiave LogName specifica il registro eventi, la chiave StartTime specifica la data e la chiave ID specifica l'ID evento.






Esempio 16

C:\PS>$starttime = (get-date).adddays(-7)        
    
C:\PS> $ie-error = Get-WinEvent -FilterHashtable @{logname="application"; providername="Application Error"; data="iexplore.exe"; starttime=$starttime}

Descrizione
-----------
In questo esempio viene utilizzata una tabella hash del filtro per trovare errori dell'applicazione Internet Explorer che si sono verificati nell'ultima settimana.
    
Il primo comando ottiene la data che precede di sette giorni la data corrente e l'archivia nella variabile $starttime.
    
Nel secondo comando viene utilizzato il cmdlet Get-WinEvent con il parametro FilterHashTable. Le chiavi nella tabella hash definiscono un filtro che seleziona, dal registro applicazioni, gli eventi scritti dal provider dell'errore dell'applicazione e include la frase "iexplore.exe".
    
La chiave LogName specifica il registro eventi. La chiave ProviderName specifica il provider di eventi, la chiave StartTime specifica la data iniziale degli eventi e la chiave Data specifica il testo nel messaggio dell'evento.






Vedere anche




Argomenti della Guida