about_Eventlogs
Descripción breve
En este artículo se describe cómo PowerShell registra eventos en el registro de eventos de Windows.
Descripción larga
Windows PowerShell crea un registro de eventos de Windows denominado "Windows PowerShell" para registrar eventos de Windows PowerShell. Puede ver este registro en Visor de eventos o mediante cmdlets que obtienen eventos, como el Get-EventLog
cmdlet .
De forma predeterminada, los eventos de proveedor y motor de Windows PowerShell se registran en el registro de eventos, pero puede usar las variables de preferencia del registro de eventos para personalizar el registro de eventos. Por ejemplo, puede agregar eventos sobre comandos de Windows PowerShell.
El registro de eventos de Windows PowerShell registra los detalles de las operaciones de Windows PowerShell, como iniciar y detener el motor de programa e iniciar y detener los proveedores de Windows PowerShell. También puede registrar detalles sobre los comandos de Windows PowerShell.
Visualización del registro de eventos de Windows PowerShell
Puede ver el registro de eventos de Windows PowerShell en Visor de eventos o mediante los Get-EventLog
cmdlets y Get-WmiObject
. Para ver el contenido del registro de Windows PowerShell, escriba:
Get-EventLog -LogName "Windows PowerShell"
Para examinar los eventos y sus propiedades, use el Sort-Object
cmdlet, el Group-Object
cmdlet y los cmdlets que contienen el Format
verbo (los Format
cmdlets).
Por ejemplo, para ver los eventos del registro agrupados por el identificador de evento, escriba:
Get-EventLog "Windows PowerShell" | Format-Table -GroupBy EventID
O bien, escriba:
Get-EventLog "Windows PowerShell" |
Sort-Object EventID |
Group-Object EventID
Para ver todos los registros de eventos clásicos, escriba:
Get-EventLog -List
También puede usar el Get-WmiObject
cmdlet para usar las clases de Instrumental de administración de Windows (WMI) relacionadas con eventos para examinar el registro de eventos. Por ejemplo, para ver todas las propiedades del archivo de registro de eventos, escriba:
Get-WmiObject Win32_NTEventlogFile |
where LogFileName -EQ "Windows PowerShell" |
Format-List -Property *
Para buscar las clases WMI relacionadas con eventos Win32, escriba:
Get-WmiObject -List | where Name -Like "win32*event*"
Para obtener más información, vea Get-EventLog y Get-WmiObject.
Selección de eventos para el registro de eventos de Windows PowerShell
Puede usar las variables de preferencias del registro de eventos para determinar qué eventos se registran en el registro de eventos de Windows PowerShell.
Hay seis variables de preferencias de registro de eventos; dos variables para cada uno de los tres componentes de registro: el motor (el programa de Windows PowerShell), los proveedores y los comandos. Las variables LifeCycleEvent registran eventos normales de inicio y detención. Las variables de mantenimiento registran eventos de error.
En la tabla siguiente se enumeran las variables de preferencias del registro de eventos.
Variable | Descripción |
---|---|
$LogEngineLifeCycleEvent |
Registra el inicio y la detención de PowerShell |
$LogEngineHealthEvent |
Registra errores del programa de PowerShell |
$LogProviderLifeCycleEvent |
Registra el inicio y la detención de proveedores de PowerShell |
$LogProviderHealthEvent |
Registra errores del proveedor de PowerShell |
$LogCommandLifeCycleEvent |
Registra el inicio y la finalización de comandos |
$LogCommandHealthEvent |
Registros de errores de comando |
(Para obtener información sobre los proveedores de Windows PowerShell, consulte about_Providers).
De forma predeterminada, solo se habilitan los siguientes tipos de eventos:
$LogEngineLifeCycleEvent
$LogEngineHealthEvent
$LogProviderLifeCycleEvent
$LogProviderHealthEvent
Para habilitar un tipo de evento, establezca la variable de preferencia para ese tipo $true
de evento en . Por ejemplo, para habilitar eventos de ciclo de vida del comando, escriba:
$LogCommandLifeCycleEvent
O bien, escriba:
$LogCommandLifeCycleEvent = $true
Para deshabilitar un tipo de evento, establezca la variable de preferencia para ese tipo $false
de evento en . Por ejemplo, para deshabilitar eventos de ciclo de vida del comando, escriba:
$LogProviderLifeCycleEvent = $false
Puede deshabilitar cualquier evento, excepto los eventos que indican que se inició el motor de Windows PowerShell y los proveedores principales. Estos eventos generan antes de que se ejecuten los perfiles de Windows PowerShell y antes de que el programa host esté listo para aceptar comandos.
La configuración de variables solo se aplica a la sesión actual de Windows PowerShell. Para aplicarlas a todas las sesiones de Windows PowerShell, agréguelas al perfil de Windows PowerShell.
Eventos del módulo de registro
A partir de Windows PowerShell 3.0, puede registrar eventos de ejecución para los cmdlets y funciones de los módulos y complementos de Windows PowerShell estableciendo la propiedad LogPipelineExecutionDetails de módulos y complementos en $true
. En Windows PowerShell 2.0, esta característica solo está disponible para complementos.
Cuando el valor de la propiedad LogPipelineExecutionDetails es $true
, Windows PowerShell escribe eventos de ejecución de funciones y cmdlets en la sesión en el registro de Windows PowerShell en Visor de eventos. La configuración solo es efectiva en la sesión actual.
Para habilitar el registro de eventos de ejecución de cmdlets y funciones en un módulo, use la siguiente secuencia de comandos.
Import-Module Microsoft.PowerShell.Archive
$m = Get-Module Microsoft.PowerShell.Archive
$m.LogPipelineExecutionDetails = $true
Para habilitar el registro de eventos de ejecución de cmdlets en un complemento, use la siguiente secuencia de comandos.
$m = Get-PSSnapin Microsoft.PowerShell.Core
$m.LogPipelineExecutionDetails = $True
Para deshabilitar el registro, use la misma secuencia de comandos para establecer el valor de propiedad en $false
.
También puede usar la configuración activar la directiva de grupo de registro de módulos para habilitar y deshabilitar el registro de módulos y complementos. El valor de directiva incluye una lista de nombres de módulo y complemento. Se admite caracteres comodín.
Cuando Se establece Activar registro de módulos para un módulo, el valor de la propiedad LogPipelineExecutionDetails del módulo está $true
en todas las sesiones y no se puede cambiar.
La configuración de directiva de grupo "Activar registro de módulos" se encuentra en las siguientes rutas de acceso de directiva de grupo:
Computer Configuration\
Administrative Templates\
Windows Components\
Windows PowerShell
User Configuration\
Administrative Templates\
Windows Components\
Windows PowerShell
La directiva de configuración de usuario tiene prioridad sobre la directiva de configuración del equipo y ambas tienen preferencia sobre el valor de la propiedad LogPipelineExecutionDetails de módulos y complementos.
Para obtener más información sobre esta configuración de directiva de grupo, consulte about_Group_Policy_Settings.
Seguridad y auditoría
El registro de eventos de Windows PowerShell está diseñado para indicar la actividad y proporcionar detalles operativos para solucionar problemas.
Sin embargo, al igual que la mayoría de los registros de eventos de aplicaciones basadas en Windows, el registro de eventos de Windows PowerShell no está diseñado para ser seguro. No se debe usar para auditar la seguridad ni para registrar información confidencial o propietaria.
Los registros de eventos están diseñados para ser leídos y comprendidos por los usuarios. Los usuarios pueden leer y escribir en el registro. Un usuario malintencionado podría leer un registro de eventos en un equipo local o remoto, registrar datos falsos y, a continuación, impedir el registro de sus actividades.
Notas
Los autores de módulos pueden agregar características de registro a sus módulos. Para obtener más información, consulte Escritura de un módulo de Windows PowerShell.