acerca del registro fuera de Windows
Breve descripción
PowerShell registra operaciones internas del motor, proveedores y cmdlets.
Descripción larga
PowerShell registra detalles de las operaciones de PowerShell, como iniciar y detener el motor e iniciar y detener proveedores. También registra detalles sobre los comandos de PowerShell.
Para obtener información sobre cómo iniciar sesión en Windows PowerShell 5.1, consulte about_Logging.
La ubicación de los registros de PowerShell depende de la plataforma de destino.
- En Linux, PowerShell inicia sesión en el systemd journal que puede reenviar a un servidor syslog. Para obtener más información, consulte las páginas
mande su distribución de Linux. - En macOS, se utiliza el sistema de registro unificado de Apple. Para obtener más información, consulte la documentación para desarrolladores de Apple sobre el registro.
PowerShell admite la configuración de dos categorías de registro:
-
Registro de módulo: registre los eventos de ejecución de canalización para miembros de módulos específicos. El registro de módulos debe estar habilitado tanto para la sesión como para módulos específicos. Para obtener más información sobre cómo configurar este registro, consulte about_PowerShell_Config.
Si el registro del módulo está habilitado a través de la configuración, puede habilitar y deshabilitar el registro para módulos específicos en una sesión estableciendo el valor de la propiedad LogPipelineExecutionDetails del módulo.
Por ejemplo, para habilitar el registro del módulo PSReadLine:
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine True Registro de bloques de scripts: registre el procesamiento de comandos, bloques de scripts, funciones y scripts, ya sea que se invoquen de forma interactiva o mediante automatización.
Cuando habilita el registro de bloques de scripts, PowerShell registra el contenido de todos los bloques de scripts que procesa. Una vez habilitada, cualquier nueva sesión de PowerShell registra esta información.
Nota
Se recomienda habilitar el registro de eventos protegido cuando se utiliza el registro de bloques de secuencias de comandos para cualquier otra finalidad que no sea de diagnóstico. Para obtener más información, consulte about_PowerShell_Config.
Configurar el inicio de sesión en Linux o macOS
La configuración para iniciar sesión en Linux y macOS se almacena en el archivo powershell.config.json. El archivo powershell.config.json es un archivo con formato JSON que reside en el directorio $PSHOME de PowerShell. Si este archivo de configuración no existe, deberá crearlo para cambiar la configuración predeterminada. Cada instalación de PowerShell utiliza su propia copia de este archivo.
De forma predeterminada, PowerShell habilita el registro Informativo en el canal Operacional. Puede cambiar la configuración si necesita una salida de registro adicional, como detallada o habilitar la salida de registro analítico.
El siguiente código es una configuración de ejemplo:
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
La siguiente es una lista de propiedades para configurar el registro de PowerShell. Si la propiedad no aparece en la configuración, PowerShell usa el valor predeterminado.
Identidad de registro
- Valores:
, powershell
- Valores:
- Descripción: El nombre que se utilizará al iniciar sesión. La identidad predeterminada es
powershell. Este valor se puede utilizar para diferenciar entre dos instancias de una instalación de PowerShell, como una versión de lanzamiento y una versión beta. Este valor también se utiliza para redirigir la salida del registro a un archivo independiente.
Canales de registro
- Valores:
Operacional,Analítico
Nivel de registro
- Valores:
Siempre,Crítico,Error,Advertencia,Informativo,Detallado,Depurar
Registro de palabras clave
- Valores:
Runspace,Pipeline,Protocol,Transport,Host,Cmdlets,Serializador,Sesión,ManagedPlugin
Políticas de PowerShell
- Descripción: la configuración PowerShellPolicies contiene las opciones ModuleLogging, ProtectedEventLogging y ScriptBlockLogging. Para obtener más información, consulte Opciones de configuración comunes.
Visualización de datos de registro de PowerShell en journald en Linux
PowerShell registra en el systemd journal utilizando el demonio journald en distribuciones de Linux como Ubuntu y Red Hat Enterprise Linux (RHEL).
El demonio journald almacena mensajes de registro en formato binario. Utilice la utilidad journalctl para consultar el registro de diario en busca de entradas de PowerShell.
journalctl --grep powershell
El demonio journald puede reenviar mensajes de registro a un servidor de protocolo de registro del sistema (syslog). Habilite la opción ForwardToSysLog en el archivo de configuración /etc/systemd/journald.conf journald si desea utilizar syslog . iniciar sesión en su sistema Linux. Esta es la configuración predeterminada para muchas distribuciones de Linux.
Visualización de datos de registro de PowerShell en syslog en Linux
Utilice el administrador de paquetes de su distribución de Linux para instalar un servidor syslog como rsyslog si desea utilizar el registro syslog en su sistema Linux. Algunas distribuciones de Linux, como Ubuntu, preinstalan rsyslog.
El protocolo syslog almacena mensajes de registro en un formato de texto estandarizado. Puede utilizar cualquier utilidad de procesamiento de texto para consultar o ver el contenido de syslog.
De forma predeterminada, syslog escribe entradas de registro en la siguiente ubicación:
- En distribuciones basadas en Debian, incluido Ubuntu:
/var/log/syslog - En distribuciones basadas en RHEL:
/var/log/messages
El siguiente ejemplo utiliza el comando cat para consultar entradas syslog de PowerShell en Ubuntu.
cat /var/log/syslog | grep -i powershell
Formato de mensaje syslog
Los mensajes syslog tienen el siguiente formato:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP: fecha/hora en la que se produjo la entrada del registro.
- MACHINENAME: el nombre del sistema donde se produjo el registro.
- PID: el ID del proceso que escribió la entrada del registro.
- COMMITID: el ID o etiqueta git commit utilizado para producir la compilación.
- TID: el ID del hilo que escribió la entrada del registro.
CID: el identificador del canal hexadecimal de la entrada del registro.
- 0x10=Operacional
- 0x11=Analítico
EVENTID, TASK, OPCODE y LEVEL son los mismos valores que se utilizan al iniciar sesión en el registro de eventos de Windows.
Escriba el mensaje de registro de PowerShell en un archivo separado
También es posible redirigir las entradas del registro de PowerShell a un archivo independiente. Cuando las entradas del registro de PowerShell se redirigen a un archivo independiente, ya no se registran en el archivo syslog predeterminado.
Los siguientes pasos configuran las entradas de registro de PowerShell en Ubuntu para escribir en un archivo de registro llamado powershell.log.
Cree un archivo de configuración (
conf) para la configuración del registro de PowerShell en el directorio/etc/rsyslog.dusando un editor de archivos de texto comonano. Anteponga al nombre del archivo un número menor que el predeterminado. Por ejemplo,40-powershell.confdonde el valor predeterminado es50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.confAgregue la siguiente información al archivo
40-powershell.conf::syslogtag, contains, "powershell[" /var/log/powershell.log & stopVerifique que
/etc/rsyslog.conftenga una declaración de inclusión para el nuevo archivo. Puede tener una declaración genérica que lo incluya, como por ejemplo:$IncludeConfig /etc/rsyslog.d/*.confSi no es así, deberá agregar una declaración de inclusión manualmente.
Verifique que los atributos y permisos estén configurados correctamente.
ls -l /etc/rsyslog.d/40-powershell.conf-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.confSi su archivo
40-powershell.conftiene propiedad o permisos diferentes, complete los siguientes pasos:Establezca la propiedad en root.
sudo chown root:root /etc/rsyslog.d/40-powershell.conf
Establezca permisos de acceso: root tiene lectura/escritura, usuarios tiene lectura.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Reinicie el servicio rsyslog.
sudo systemctl restart rsyslog.service
Ejecute pwsh para generar información de PowerShell para registrar.
pwsh
Nota
El archivo /var/log/powershell.log no se crea hasta que se reinicia el servicio rsyslog y PowerShell genera información para registrar.
Consulte el archivo powershell.log para verificar que la información de PowerShell se esté registrando en el nuevo archivo.
cat /var/log/powershell.log
Ver datos de registro de PowerShell en macOS
PowerShell registra en el sistema de registro unificado de Apple, una característica de macOS que permite la recopilación y el almacenamiento de registros del sistema y de aplicaciones en una única ubicación centralizada.
El sistema de registro unificado de Apple almacena los mensajes de registro en formato binario. Utilice la aplicación de consola o la herramienta de registro para consultar el sistema de registro unificado en busca de entradas de PowerShell.
Ver datos de registro de PowerShell en la aplicación de consola en macOS
La aplicación Console en macOS es una utilidad que proporciona una interfaz gráfica de usuario para ver datos de registro. La aplicación Consola se incluye con macOS de forma predeterminada y se puede acceder a ella abriendo la carpeta Utilidades en la carpeta Aplicaciones.
Utilice los siguientes pasos para ver los datos de registro de PowerShell en la aplicación de consola en macOS:
- Busque la aplicación Consola y ejecútela.
- Seleccione el nombre de la máquina en Dispositivos.
- En el campo Buscar, ingrese
pwshpara el binario principal de PowerShell y presione retorno. - Cambie el filtro de búsqueda de
CualquieraProceso. - Haga clic en Iniciar.
- Ejecute
pwshpara generar información de PowerShell para registrar.
El ID del proceso para una instancia en ejecución de PowerShell se almacena en la variable $PID. Utilice los siguientes pasos para filtrar por una instancia de proceso específica de PowerShell en la aplicación Consola.
- Ejecute una instancia de
pwsh. - Ejecute
$PIDen la instancia de PowerShell iniciada en el paso anterior para determinar su ID de proceso. - Ingrese el ID del proceso para
pwshen el campo Buscar y presione retorno. - Cambie el filtro de búsqueda de
CualquieraPID. - Haga clic en Iniciar.
- Genere información de PowerShell para iniciar sesión desde la instancia de PowerShell iniciada en el primer paso.
Para obtener más información, consulte ver mensajes de registro en la consola en Mac.
Ver datos de registro de PowerShell desde la línea de comando en macOS
Para ver los datos de registro de PowerShell desde una línea de comando en macOS, use el comando log en la Terminal u otra aplicación host de shell. Estos comandos se pueden ejecutar desde PowerShell, Z shell (Zsh) o Bash.
En el siguiente ejemplo, el comando log se utiliza para mostrar los datos de registro en su sistema tal como ocurren en tiempo real. El parámetro proceso filtra los datos de registro solo para el proceso pwsh. Si tiene más de una instancia de pwsh ejecutándose, el parámetro process también acepta un ID de proceso como valor. El parámetro level muestra mensajes en el nivel especificado y por debajo.
log stream --process pwsh --level info
Modos y niveles de datos de registro de PowerShell en macOS
De forma predeterminada, el subsistema PowerShell registra mensajes de nivel de información en la memoria (modo) y mensajes de nivel predeterminado en el disco (persistencia) en macOS. Este comportamiento se puede cambiar para habilitar un modo y nivel de registro diferentes usando el comando log config.
El siguiente ejemplo habilita el registro y la persistencia a nivel de información para el subsistema PowerShell:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Utilice el parámetro reset para revertir la configuración del registro a los valores predeterminados para el subsistema PowerShell:
sudo log config --subsystem com.microsoft.powershell --reset
El comando log show se puede utilizar para exportar elementos de registro. El comando log show proporciona opciones para exportar los últimos N elementos, elementos desde un momento determinado o elementos dentro de un período de tiempo determinado.
Por ejemplo, el siguiente comando exporta elementos desde las 9 a.m. del 5 de abril de 2022:
log show --info --start "2022-04-05 09:00:00" --process pwsh
Para obtener más información, ejecute log show --help para ver la ayuda del comando log show.
También es posible que desee considerar guardar los registros en una ubicación más segura, como el agregador de gestión de eventos e información de seguridad (SIEM). Con Microsoft Defender para aplicaciones en la nube, puede configurar SIEM en Azure. Para obtener más información, consulte Integración SIEM genérica.
Ver también
- Para obtener información sobre syslog y rsyslog.conf de Linux, consulte las páginas
manlocales de la computadora Linux. - Para obtener información sobre el registro de macOS, consulte la documentación para desarrolladores de Apple sobre el registro.
- Para Windows, consulte about_Logging_Windows
- Integración SIEM genérica