Búsqueda de sitios web

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 man de 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, LogPipelineExecutionDetails
    
    Name       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
    • 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
    • Descripción: Los canales a habilitar. Separe los valores con una coma cuando especifique más de uno. El valor predeterminado es Operacional.
  • Nivel de registro

    • Valores: Siempre, Crítico, Error, Advertencia, Informativo, Detallado, Depurar
    • Descripción: Especifique un valor único. Los valores se enumeran en orden creciente de detalle. El valor que elija se habilita a sí mismo y a todos los valores anteriores. El valor predeterminado es Informativo.
  • Registro de palabras clave

    • Valores: Runspace, Pipeline, Protocol, Transport, Host, Cmdlets, Serializador, Sesión, ManagedPlugin
    • Descripción: Las palabras clave brindan la capacidad de limitar el registro a componentes específicos dentro de PowerShell. De forma predeterminada, todas las palabras clave están habilitadas y cambiar este valor solo es útil para la resolución de problemas especializados.
  • 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: el identificador del evento de la entrada del registro.
  • TASK: el identificador de tarea para la entrada del evento.
  • OPCODE: el código de operación para la entrada del evento.
  • LEVEL: el nivel de registro para la entrada del evento.
  • MENSAJE: el mensaje asociado con la entrada del evento.

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.

  1. Cree un archivo de configuración (conf) para la configuración del registro de PowerShell en el directorio /etc/rsyslog.d usando un editor de archivos de texto como nano . Anteponga al nombre del archivo un número menor que el predeterminado. Por ejemplo, 40-powershell.conf donde el valor predeterminado es 50-default.conf.

    sudo nano /etc/rsyslog.d/40-powershell.conf
    
  2. Agregue la siguiente información al archivo 40-powershell.conf:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. Verifique que /etc/rsyslog.conf tenga 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/*.conf
    

    Si no es así, deberá agregar una declaración de inclusión manualmente.

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

    Si su archivo 40-powershell.conf tiene propiedad o permisos diferentes, complete los siguientes pasos:

    1. Establezca la propiedad en root.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. Establezca permisos de acceso: root tiene lectura/escritura, usuarios tiene lectura.

      sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
      
  5. Reinicie el servicio rsyslog.

    sudo systemctl restart rsyslog.service
    
  6. 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.

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

  1. Busque la aplicación Consola y ejecútela.
  2. Seleccione el nombre de la máquina en Dispositivos.
  3. En el campo Buscar, ingrese pwsh para el binario principal de PowerShell y presione retorno.
  4. Cambie el filtro de búsqueda de Cualquier a Proceso.
  5. Haga clic en Iniciar.
  6. Ejecute pwsh para 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.

  1. Ejecute una instancia de pwsh.
  2. Ejecute $PID en la instancia de PowerShell iniciada en el paso anterior para determinar su ID de proceso.
  3. Ingrese el ID del proceso para pwsh en el campo Buscar y presione retorno.
  4. Cambie el filtro de búsqueda de Cualquier a PID.
  5. Haga clic en Iniciar.
  6. 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 man locales 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

Artículos relacionados