Get-EventLog

Ottiene gli eventi in un registro eventi o un elenco dei registri eventi nel computer locale o nei computer remoti.

Sintassi

Get-EventLog
   [-LogName] <String>
   [-ComputerName <String[]>]
   [-Newest <Int32>]
   [-After <DateTime>]
   [-Before <DateTime>]
   [-UserName <String[]>]
   [[-InstanceId] <Int64[]>]
   [-Index <Int32[]>]
   [-EntryType <String[]>]
   [-Source <String[]>]
   [-Message <String>]
   [-AsBaseObject]
   [<CommonParameters>]
Get-EventLog
   [-ComputerName <String[]>]
   [-List]
   [-AsString]
   [<CommonParameters>]

Descrizione

Il Get-EventLog cmdlet ottiene eventi e registri eventi dai computer locali e remoti. Per impostazione predefinita, Get-EventLog ottiene i log dal computer locale. Per ottenere i log dai computer remoti, usare il parametro ComputerName .

È possibile usare i Get-EventLog parametri e i valori delle proprietà per cercare gli eventi. Il cmdlet ottiene eventi che corrispondono ai valori delle proprietà specificati.

I cmdlet di PowerShell che contengono il EventLog sostantivo funzionano solo nei registri eventi classici di Windows, ad esempio Application, System o Security. Per ottenere i log che usano la tecnologia Registro eventi di Windows in Windows Vista e versioni successive di Windows, usare Get-WinEvent.

Nota

Get-EventLog usa un'API Win32 deprecata. I risultati potrebbero non essere accurati. Usare invece il Get-WinEvent cmdlet .

Esempio

Esempio 1: Ottenere i registri eventi nel computer locale

In questo esempio viene visualizzato l'elenco dei registri eventi disponibili nel computer locale. I nomi nella colonna Log vengono usati con il parametro LogName per specificare il log in cui viene eseguita la ricerca di eventi.

Get-EventLog -List

Max(K)   Retain   OverflowAction      Entries  Log
------   ------   --------------      -------  ---
15,168        0   OverwriteAsNeeded   20,792   Application
15,168        0   OverwriteAsNeeded   12,559   System
15,360        0   OverwriteAsNeeded   11,173   Windows PowerShell

Il Get-EventLog cmdlet usa il parametro List per visualizzare i log disponibili.

Esempio 2: Ottenere voci recenti da un registro eventi nel computer locale

In questo esempio vengono ottenute voci recenti dal registro eventi di sistema.

Get-EventLog -LogName System -Newest 5

Index   Time          EntryType    Source              InstanceID   Message
-----   ----          ---------    ------              ----------   -------
13820   Jan 17 19:16  Error        DCOM                     10016   The description for Event...
13819   Jan 17 19:08  Error        DCOM                     10016   The description for Event...
13818   Jan 17 19:06  Information  Service Control...  1073748864   The start type of the Back...
13817   Jan 17 19:05  Error        DCOM                     10016   The description for Event...
13815   Jan 17 19:03  Information  Microsoft-Windows...        35   The time service is now sync...

Il Get-EventLog cmdlet usa il parametro LogName per specificare il registro eventi di sistema. Il parametro Newest restituisce i cinque eventi più recenti.

Esempio 3: Trovare tutte le origini per un numero specifico di voci in un registro eventi

In questo esempio viene illustrato come trovare tutte le origini incluse nelle 1000 voci più recenti nel registro eventi di sistema.

$Events = Get-EventLog -LogName System -Newest 1000
$Events | Group-Object -Property Source -NoElement | Sort-Object -Property Count -Descending

Count   Name
-----   ----
  110   DCOM
   65   Service Control Manager
   51   Microsoft-Windows-Kern...
   14   EventLog
   14   BTHUSB
   13   Win32k

Il Get-EventLog cmdlet usa il parametro LogName per specificare il log di sistema. Il parametro Più recente seleziona i 1000 eventi più recenti. Gli oggetti evento vengono archiviati nella $Events variabile . Gli $Events oggetti vengono inviati alla pipeline al Group-Object cmdlet . Group-Object utilizza il parametro Property per raggruppare gli oggetti in base all'origine e conta il numero di oggetti per ogni origine. Il parametro NoElement rimuove i membri del gruppo dall'output. Il Sort-Object cmdlet usa il parametro Property per ordinare in base al conteggio di ogni nome di origine. Il parametro decrescente ordina l'elenco in base al conteggio dal più alto al più basso.

Esempio 4: Ottenere eventi di errore da un registro eventi specifico

In questo esempio vengono generati eventi di errore dal registro eventi di sistema.

Get-EventLog -LogName System -EntryType Error

Index Time          EntryType   Source  InstanceID Message
----- ----          ---------   ------  ---------- -------
13296 Jan 16 13:53  Error       DCOM    10016 The description for Event ID '10016' in Source...
13291 Jan 16 13:51  Error       DCOM    10016 The description for Event ID '10016' in Source...
13245 Jan 16 11:45  Error       DCOM    10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07  Error       DCOM    10016 The description for Event ID '10016' in Source...

Il Get-EventLog cmdlet usa il parametro LogName per specificare il log di sistema. Il parametro EntryType filtra gli eventi per visualizzare solo gli eventi Error.

Esempio 5: Ottenere eventi da un registro eventi con un valore InstanceId e Source

In questo esempio vengono ottenuti eventi dal log di sistema per un Valore InstanceId e Un'origine specifici.

Get-EventLog -LogName System -InstanceId 10016 -Source DCOM

Index Time          EntryType  Source  InstanceID  Message
----- ----          ---------  ------  ----------  -------
13245 Jan 16 11:45  Error      DCOM         10016  The description for Event ID '10016' in Source...
13230 Jan 16 11:07  Error      DCOM         10016  The description for Event ID '10016' in Source...
13219 Jan 16 10:00  Error      DCOM         10016  The description for Event ID '10016' in Source...

Il Get-EventLog cmdlet usa il parametro LogName per specificare il log di sistema. Il parametro InstanceID seleziona gli eventi con l'ID istanza specificato. Il parametro Source specifica la proprietà dell'evento.

Esempio 6: Ottenere eventi da più computer

Questo comando ottiene gli eventi dal registro eventi di sistema in tre computer: Server01, Server02 e Server03.

Get-EventLog -LogName System -ComputerName Server01, Server02, Server03

Il Get-EventLog cmdlet usa il parametro LogName per specificare il log di sistema. Il parametro ComputerName usa una stringa delimitata da virgole per elencare i computer da cui si desidera ottenere i registri eventi.

Esempio 7: Ottenere tutti gli eventi che includono una parola specifica nel messaggio

Questo comando ottiene tutti gli eventi nel registro eventi di sistema che contengono una parola specifica nel messaggio dell'evento. È possibile che il valore del parametro Message specificato sia incluso nel contenuto del messaggio, ma non venga visualizzato nella console di PowerShell.

Get-EventLog -LogName System -Message *description*

Index Time          EntryType   Source       InstanceID   Message
----- ----          ---------   ------       ----------   -------
13821 Jan 17 19:17  Error       DCOM              10016   The description for Event ID '10016'...
13820 Jan 17 19:16  Error       DCOM              10016   The description for Event ID '10016'...
13819 Jan 17 19:08  Error       DCOM              10016   The description for Event ID '10016'...

Il Get-EventLog cmdlet usa il parametro LogName per specificare il registro eventi di sistema. Il parametro Message consente di specificare una parola da cercare nel campo del messaggio di ogni evento.

Esempio 8: Visualizzare i valori delle proprietà di un evento

In questo esempio viene illustrato come visualizzare tutte le proprietà e i valori di un evento.

$A = Get-EventLog -LogName System -Newest 1
$A | Select-Object -Property *

EventID            : 10016
MachineName        : localhost
Data               : {}
Index              : 13821
Category           : (0)
CategoryNumber     : 0
EntryType          : Error
Message            : The description for Event ID '10016' in Source 'DCOM'...
Source             : DCOM
ReplacementStrings : {Local,...}
InstanceId         : 10016
TimeGenerated      : 1/17/2019 19:17:23
TimeWritten        : 1/17/2019 19:17:23
UserName           : username
Site               :
Container          :

Il Get-EventLog cmdlet usa il parametro LogName per specificare il registro eventi di sistema. Il parametro Newest seleziona l'oggetto evento più recente. L'oggetto viene archiviato nella $A variabile . L'oggetto $A nella variabile viene inviato alla pipeline al Select-Object cmdlet . Select-Object usa il parametro Property con un asterisco (*) per selezionare tutte le proprietà dell'oggetto.

Esempio 9: Ottenere eventi da un registro eventi usando un'origine e un ID evento

Questo esempio ottiene gli eventi per un id origine e un ID evento specificati.

Get-EventLog -LogName Application -Source Outlook | Where-Object {$_.EventID -eq 63} |
              Select-Object -Property Source, EventID, InstanceId, Message

Source   EventID   InstanceId   Message
------   -------   ----------   -------
Outlook       63   1073741887   The Exchange web service request succeeded.
Outlook       63   1073741887   Outlook detected a change notification.
Outlook       63   1073741887   The Exchange web service request succeeded.

Il Get-EventLog cmdlet usa il parametro LogName per specificare il registro eventi dell'applicazione. Il parametro Source specifica il nome dell'applicazione, Outlook. Gli oggetti vengono inviati alla pipeline al Where-Object cmdlet . Per ogni oggetto nella pipeline, il Where-Object cmdlet usa la variabile per confrontare $_.EventID la proprietà ID evento con il valore specificato. Gli oggetti vengono inviati alla pipeline al Select-Object cmdlet . Select-Object usa il parametro Property per selezionare le proprietà da visualizzare nella console di PowerShell.

Esempio 10: Ottenere eventi e raggruppare in base a una proprietà

Get-EventLog -LogName System -UserName NT* | Group-Object -Property UserName -NoElement |
              Select-Object -Property Count, Name

Count  Name
-----  ----
6031   NT AUTHORITY\SYSTEM
  42   NT AUTHORITY\LOCAL SERVICE
   4   NT AUTHORITY\NETWORK SERVICE

Il Get-EventLog cmdlet usa il parametro LogName per specificare il log di sistema. Il parametro UserName include il carattere jolly asterisco (*) per specificare una parte del nome utente. Gli oggetti evento vengono inviati alla pipeline al Group-Object cmdlet . Group-Object utilizza il parametro Property per specificare che la proprietà UserName viene utilizzata per raggruppare gli oggetti e contare il numero di oggetti per ogni nome utente. Il parametro NoElement rimuove i membri del gruppo dall'output. Gli oggetti vengono inviati alla pipeline al Select-Object cmdlet . Select-Object usa il parametro Property per selezionare le proprietà da visualizzare nella console di PowerShell.

Esempio 11: Ottenere eventi che si sono verificati durante un intervallo di data e ora specifico

Questo esempio ottiene gli eventi Error dal registro eventi di sistema per un intervallo di data e ora specificato. I parametri Before e After impostano l'intervallo di data e ora, ma vengono esclusi dall'output.

$Begin = Get-Date -Date '1/17/2019 08:00:00'
$End = Get-Date -Date '1/17/2019 17:00:00'
Get-EventLog -LogName System -EntryType Error -After $Begin -Before $End

Index Time          EntryType   Source   InstanceID  Message
----- ----          ---------   ------   ----------  -------
13821 Jan 17 13:40  Error       DCOM          10016  The description for Event ID...
13820 Jan 17 13:11  Error       DCOM          10016  The description for Event ID...
...
12372 Jan 17 10:08  Error       DCOM          10016  The description for Event ID...
12371 Jan 17 09:04  Error       DCOM          10016  The description for Event ID...

Il Get-Date cmdlet usa il parametro Date per specificare una data e un'ora. Gli oggetti DateTime vengono archiviati nelle $Begin variabili e $End . Il Get-EventLog cmdlet usa il parametro LogName per specificare il log di sistema. Il parametro EntryType specifica il tipo di evento Error. L'intervallo di data e ora viene impostato dal parametro After e dalla variabile e dal parametro Before e $End dalla variabile .$Begin

Parametri

-After

Ottiene gli eventi che si sono verificati dopo una data e un'ora specificate. Il parametro After date and time viene escluso dall'output. Immettere un oggetto DateTime , ad esempio il valore restituito dal Get-Date cmdlet .

Type:DateTime
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsBaseObject

Indica che questo cmdlet restituisce un oggetto System.Diagnostics.EventLogEntry standard per ogni evento. Senza questo parametro, Get-EventLog restituisce un oggetto PSObject esteso con proprietà EventLogName, Source e InstanceId aggiuntive.

Per visualizzare l'effetto di questo parametro, inviare tramite pipe gli eventi al Get-Member cmdlet ed esaminare il valore TypeName nel risultato.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsString

Indica che questo cmdlet restituisce l'output come stringhe, anziché come oggetti.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Before

Ottiene gli eventi che si sono verificati prima di una data e un'ora specificati. La data e l'ora del parametro Before vengono escluse dall'output. Immettere un oggetto DateTime , ad esempio il valore restituito dal Get-Date cmdlet .

Type:DateTime
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Questo parametro specifica il nome NetBIOS di un computer remoto, l'indirizzo IP (Internet Protocol) o un nome di dominio completo (FQDN).

Se il parametro ComputerName non è specificato, Get-EventLog per impostazione predefinita viene impostato sul computer locale. Il parametro accetta anche un punto (.) per specificare il computer locale.

Il parametro ComputerName non si basa sulla comunicazione remota di Windows PowerShell. È possibile usare Get-EventLog con il parametro ComputerName anche se il computer non è configurato per l'esecuzione di comandi remoti.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EntryType

Specifica, come matrice di stringhe, il tipo di voce degli eventi che questo cmdlet ottiene.

I valori validi per questo parametro sono:

  • Error
  • Informazioni
  • FailureAudit
  • SuccessAudit
  • Avviso
Type:String[]
Aliases:ET
Accepted values:Error, Information, FailureAudit, SuccessAudit, Warning
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Index

Specifica i valori di indice da ottenere dal registro eventi. Il parametro accetta una stringa delimitata da virgole di valori.

Type:Int32[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InstanceId

Specifica gli ID istanza da ottenere dal registro eventi. Il parametro accetta una stringa delimitata da virgole di valori.

Type:Int64[]
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-List

Visualizza l'elenco dei registri eventi nel computer.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LogName

Specifica il nome di un registro eventi. Per trovare i nomi dei log, usare Get-EventLog -List. I caratteri jolly sono consentiti. Questo parametro è obbligatorio.

Type:String
Aliases:LN
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Message

Specifica una stringa nel messaggio dell'evento. È possibile usare questo parametro per cercare messaggi contenenti determinate parole o frasi. I caratteri jolly sono consentiti.

Type:String
Aliases:MSG
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Newest

Inizia con gli eventi più recenti e ottiene il numero specificato di eventi. Il numero di eventi è obbligatorio, ad esempio -Newest 100. Specifica il numero massimo di eventi restituiti.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Source

Specifica, come matrice di stringhe, le origini scritte nel log restituito da questo cmdlet. I caratteri jolly sono consentiti.

Type:String[]
Aliases:ABO
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-UserName

Specifica, come matrice di stringhe, nomi utente associati agli eventi. Immettere nomi o modelli di nome, ad esempio User01, User*o Domain01\User*. I caratteri jolly sono consentiti.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

Input

None

Non è possibile inviare tramite pipe l'input a Get-EventLog.

Output

System.Diagnostics.EventLogEntry. System.Diagnostics.EventLog. System.String

Se viene specificato il parametro LogName , l'output è una raccolta di oggetti System.Diagnostics.EventLogEntry .

Se viene specificato solo il parametro List , l'output è una raccolta di oggetti System.Diagnostics.EventLog .

Se vengono specificati entrambi i parametri List e AsString , l'output è una raccolta di oggetti System.String .

Note

I cmdlet Get-EventLog e Get-WinEvent non sono supportati nell'ambiente preinstallazione di Windows (Windows PE).