Get-EventLog

Obtiene los eventos de un registro de eventos, o una lista de los registros de eventos, en el equipo local o en los equipos remotos.

Syntax

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>]

Description

El Get-EventLog cmdlet obtiene eventos y registros de eventos de equipos locales y remotos. De forma predeterminada, Get-EventLog obtiene los registros del equipo local. Para obtener registros de equipos remotos, use el parámetro ComputerName .

Puede usar los parámetros y los Get-EventLog valores de propiedad para buscar eventos. El cmdlet obtiene eventos que coinciden con los valores de propiedad especificados.

Los cmdlets de PowerShell que contienen el EventLog nombre solo funcionan en registros de eventos clásicos de Windows, como Aplicación, Sistema o Seguridad. Para obtener registros que usan la tecnología registro de eventos de Windows en Windows Vista y versiones posteriores de Windows, use Get-WinEvent.

Nota:

Get-EventLog usa una API de Win32 que está en desuso. Es posible que los resultados no sean precisos. Use el Get-WinEvent cmdlet en su lugar.

Ejemplos

Ejemplo 1: Obtención de registros de eventos en el equipo local

En este ejemplo se muestra la lista de registros de eventos que están disponibles en el equipo local. Los nombres de la columna Registro se usan con el parámetro LogName para especificar qué registro se busca en eventos.

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

El Get-EventLog cmdlet usa el parámetro List para mostrar los registros disponibles.

Ejemplo 2: Obtener entradas recientes de un registro de eventos en el equipo local

En este ejemplo se obtienen entradas recientes del registro de eventos del 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...

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro de eventos del sistema. El parámetro Newest devuelve los cinco eventos más recientes.

Ejemplo 3: Buscar todos los orígenes de un número específico de entradas en un registro de eventos

En este ejemplo se muestra cómo buscar todos los orígenes que se incluyen en las 1000 entradas más recientes del registro de eventos del 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

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro del sistema. El parámetro Más reciente selecciona los 1000 eventos más recientes. Los objetos de evento se almacenan en la $Events variable . Los $Events objetos se envían a la canalización al Group-Object cmdlet . Group-Object usa el parámetro Property para agrupar los objetos por origen y cuenta el número de objetos de cada origen. El parámetro NoElement quita los miembros del grupo de la salida. El Sort-Object cmdlet usa el parámetro Property para ordenar por el recuento de cada nombre de origen. El parámetro Descendente ordena la lista en orden por recuento de mayor a menor.

Ejemplo 4: Obtener eventos de error de un registro de eventos específico

En este ejemplo se obtienen eventos de error del registro de eventos del 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...

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro del sistema. El parámetro EntryType filtra los eventos para mostrar solo los eventos Error.

Ejemplo 5: Obtención de eventos de un registro de eventos con un valor InstanceId y Source

En este ejemplo se obtienen eventos del registro del sistema para un instanceId y un origen específicos.

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

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro del sistema. El parámetro InstanceID selecciona los eventos con el identificador de instancia especificado. El parámetro Source especifica la propiedad de evento.

Ejemplo 6: Obtención de eventos de varios equipos

Este comando obtiene los eventos del registro de eventos del sistema en tres equipos: Server01, Server02 y Server03.

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

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro del sistema. El parámetro ComputerName usa una cadena separada por comas para enumerar los equipos desde los que desea obtener los registros de eventos.

Ejemplo 7: Obtener todos los eventos que incluyen una palabra específica en el mensaje

Este comando obtiene todos los eventos del registro de eventos del sistema que contienen una palabra específica en el mensaje del evento. Es posible que el valor del parámetro Message especificado se incluya en el contenido del mensaje, pero no se muestre en la consola de 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'...

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro de eventos del sistema. El parámetro Message especifica una palabra para buscar en el campo de mensaje de cada evento.

Ejemplo 8: Mostrar los valores de propiedad de un evento

En este ejemplo se muestra cómo mostrar todas las propiedades y valores de 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          :

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro de eventos del sistema. El parámetro Más reciente selecciona el objeto de evento más reciente. El objeto se almacena en la $A variable . El objeto de la $A variable se envía a la canalización al Select-Object cmdlet . Select-Object usa el parámetro Property con un asterisco (*) para seleccionar todas las propiedades del objeto.

Ejemplo 9: Obtención de eventos de un registro de eventos mediante un origen y un identificador de evento

En este ejemplo se obtienen eventos para un origen y un identificador de evento especificados.

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.

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro de eventos application. El parámetro Source especifica el nombre de la aplicación, Outlook. Los objetos se envían a la canalización al Where-Object cmdlet . Para cada objeto de la canalización, el Where-Object cmdlet usa la variable $_.EventID para comparar la propiedad Id. de evento con el valor especificado. Los objetos se envían a la canalización al Select-Object cmdlet . Select-Object usa el parámetro Property para seleccionar las propiedades que se van a mostrar en la consola de PowerShell.

Ejemplo 10: Obtener eventos y agrupar por una propiedad

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

El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro del sistema. El parámetro UserName incluye el comodín asterisco (*) para especificar una parte del nombre de usuario. Los objetos de evento se envían a la canalización al Group-Object cmdlet . Group-Object usa el parámetro Property para especificar que la propiedad UserName se usa para agrupar los objetos y contar el número de objetos para cada nombre de usuario. El parámetro NoElement quita los miembros del grupo de la salida. Los objetos se envían a la canalización al Select-Object cmdlet . Select-Object usa el parámetro Property para seleccionar las propiedades que se van a mostrar en la consola de PowerShell.

Ejemplo 11: Obtener eventos que se produjeron durante un intervalo de fecha y hora específico

En este ejemplo se obtienen eventos de error del registro de eventos del sistema para un intervalo de fecha y hora especificados. Los parámetros Before y After establecen el intervalo de fecha y hora, pero se excluyen de la salida.

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

El Get-Date cmdlet usa el parámetro Date para especificar una fecha y hora. Los objetos DateTime se almacenan en las $Begin variables y $End . El Get-EventLog cmdlet usa el parámetro LogName para especificar el registro del sistema. El parámetro EntryType especifica el tipo de evento Error. El intervalo de fecha y hora se establece mediante el parámetro After y la variable After y $Begin el parámetro Before y $End la variable.

Parámetros

-After

Obtiene los eventos que se produjeron después de una fecha y hora especificadas. La fecha y hora del parámetro After se excluyen de la salida. Escriba un objeto DateTime , como el valor devuelto por el Get-Date cmdlet .

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

-AsBaseObject

Indica que este cmdlet devuelve un objeto System.Diagnostics.EventLogEntry estándar para cada evento. Sin este parámetro, Get-EventLog devuelve un objeto PSObject extendido con propiedades EventLogName, Source e InstanceId adicionales.

Para ver el efecto de este parámetro, canalice los eventos al Get-Member cmdlet y examine el valor TypeName en el resultado.

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

-AsString

Indica que este cmdlet devuelve la salida como cadenas, en lugar de objetos .

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

-Before

Obtiene los eventos que se produjeron antes de una fecha y hora especificadas. La fecha y hora del parámetro Before se excluyen de la salida. Escriba un objeto DateTime , como el valor devuelto por el Get-Date cmdlet .

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

-ComputerName

Este parámetro especifica el nombre NetBIOS de un equipo remoto, la dirección del Protocolo de Internet (IP) o un nombre de dominio completo (FQDN).

Si no se especifica el parámetro ComputerName , Get-EventLog el valor predeterminado es el equipo local. El parámetro también acepta un punto (.) para especificar el equipo local.

El parámetro ComputerName no se basa en la comunicación remota de Windows PowerShell. Puede usar Get-EventLog con el parámetro ComputerName incluso si el equipo no está configurado para ejecutar comandos remotos.

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

-EntryType

Especifica, como matriz de cadenas, el tipo de entrada de los eventos que obtiene este cmdlet.

Los valores permitidos para este parámetro son los siguientes:

  • Error
  • Información
  • FailureAudit
  • SuccessAudit
  • Advertencia
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

Especifica los valores de índice que se van a obtener del registro de eventos. El parámetro acepta una cadena separada por comas de valores.

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

-InstanceId

Especifica los identificadores de instancia que se van a obtener del registro de eventos. El parámetro acepta una cadena separada por comas de valores.

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

-List

Muestra la lista de registros de eventos en el equipo.

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

-LogName

Especifica el nombre de un registro de eventos. Para buscar los nombres de registro, use Get-EventLog -List. Se permite el uso de caracteres comodín. Este parámetro es obligatorio.

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

-Message

Especifica una cadena en el mensaje de evento. Puede usar este parámetro para buscar mensajes que contengan determinadas palabras o frases. Se permiten los caracteres comodín.

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

-Newest

Comienza con los eventos más recientes y obtiene el número especificado de eventos. El número de eventos es necesario, por ejemplo -Newest 100, . Especifica el número máximo de eventos que se devuelven.

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

-Source

Especifica, como matriz de cadenas, los orígenes que se escribieron en el registro que obtiene este cmdlet. Se permiten los caracteres comodín.

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

-UserName

Especifica, como matriz de cadenas, nombres de usuario asociados a eventos. Escriba nombres o patrones de nombre, como User01, User*o Domain01\User*. Se permiten los caracteres comodín.

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

Entradas

None

No se puede canalizar la entrada a Get-EventLog.

Salidas

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

Si se especifica el parámetro LogName , la salida es una colección de objetos System.Diagnostics.EventLogEntry .

Si solo se especifica el parámetro List , la salida es una colección de objetos System.Diagnostics.EventLog .

Si se especifican los parámetros List y AsString , la salida es una colección de objetos System.String .

Notas

Los cmdlets y Get-WinEvent no se admiten en el entorno de preinstalación Get-EventLog de Windows (Windows PE).