Compartilhar via


about_Logging_Non-Windows

Descrição breve

O PowerShell registra operações internas do mecanismo, provedores e cmdlets.

Descrição longa

O PowerShell registra detalhes das operações do PowerShell, como iniciar e parar o mecanismo e iniciar e parar provedores. Ele também registra detalhes sobre os comandos do PowerShell.

Para obter informações sobre como fazer logon no Windows PowerShell 5.1, consulte about_Logging.

O local dos logs do PowerShell depende da plataforma de destino.

  • No Linux, o PowerShell registra no diário systemd que pode encaminhar para um servidor syslog. Para obter mais informações, consulte as páginas da man sua distribuição do Linux.
  • No macOS, o sistema de registro unificado da Apple é usado. Para obter mais informações, consulte a documentação do desenvolvedor da Apple sobre registro em log.

O PowerShell dá suporte à configuração de duas categorias de registro em log:

  • Log do módulo – registre os eventos de execução do pipeline para membros de módulos especificados. O registro do módulo deve ser ativado para a sessão e módulos específicos. Para obter mais informações sobre como configurar esse registro, consulte about_PowerShell_Config.

    Se o log do módulo estiver habilitado por meio da configuração, você poderá habilitar e desabilitar o log para módulos específicos em uma sessão definindo o valor da propriedade LogPipelineExecutionDetails do módulo.

    Por exemplo, para habilitar o log do módulo para o módulo PSReadLine :

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Log de bloco de script - Registre o processamento de comandos, blocos de script, funções e scripts, sejam invocados interativamente ou por meio de automação.

    Quando você habilita o Log de Blocos de Script, o PowerShell registra o conteúdo de todos os blocos de script que ele processa. Depois de habilitada, qualquer nova sessão do PowerShell registra essas informações.

    Observação

    É recomendável habilitar o Log de Eventos Protegidos, ao usar o Log de Blocos de Script para qualquer coisa que não seja para fins de diagnóstico. Para obter mais informações, consulte about_PowerShell_Config.

Configurando o registro no Linux ou macOS

A configuração para registro em log no Linux e no macOS é armazenada no powershell.config.json arquivo. O powershell.config.json arquivo é um arquivo formatado em JSON que reside no diretório do PowerShell $PSHOME . Se esse arquivo de configuração não existir, você precisará criá-lo para alterar as configurações padrão. Cada instalação do PowerShell usa sua própria cópia desse arquivo.

Por padrão, o PowerShell habilita Informational o registro em log no Operational canal. Você pode alterar a configuração se precisar de saída de log adicional, como detalhado ou habilitar a saída de log analítico.

O código a seguir é um exemplo de configuração:

{
    "ModuleLogging": {
        "EnableModuleLogging": false,
        "ModuleNames": [
            "PSReadLine",
            "PowerShellGet"
        ]
    },
    "ScriptBlockLogging": {
        "EnableScriptBlockInvocationLogging": true,
        "EnableScriptBlockLogging": true
    },
    "LogLevel": "verbose"
}

Veja a seguir uma lista de propriedades para configurar o log do PowerShell. Se a propriedade não estiver listada na configuração, o PowerShell usará o valor padrão.

  • Identidade de log
    • Valores: <string name>, powershell
    • Descrição: o nome a ser usado ao registrar em log. A identidade padrão é powershell. Esse valor pode ser usado para informar a diferença entre duas instâncias de uma instalação do PowerShell, como uma versão beta e uma versão beta. Esse valor também é usado para redirecionar a saída do log para um arquivo separado.
  • Canais de log
    • Valores: Operational, Analytic
    • Descrição: os canais a serem ativados. Separe os valores com uma vírgula ao especificar mais de um. O valor padrão é Operational.
  • LogLevel
    • Valores: Always, Critical, Error, Warning, Informational, Verbose, Debug
    • Descrição: especifique um único valor. Os valores são listados em ordem crescente de detalhamento. O valor escolhido habilita a si mesmo e a todos os valores anteriores a ele. O valor padrão é Informational.
  • Palavras-chave de log
    • Valores: Runspace, Pipeline, Protocol, Transport, Host, Cmdlets, Serializer, , Session, ManagedPlugin
    • Descrição: as palavras-chave fornecem a capacidade de limitar o registro em log a componentes específicos no PowerShell. Por padrão, todas as palavras-chave estão habilitadas e alterar esse valor só é útil para solução de problemas especializada.
  • Políticas do PowerShell
    • Descrição: a configuração PowerShellPolicies contém as opções ModuleLogging, ProtectedEventLogging e ScriptBlockLogging. Para obter mais informações, consulte Definições de configuração comuns.

Exibindo dados de log do PowerShell no journald no Linux

O PowerShell registra no diário do systemd usando o daemon journald em distribuições do Linux, como Ubuntu e RHEL (Red Hat Enterprise Linux).

O daemon journald armazena mensagens de log em um formato binário. Use o journalctl utilitário para consultar o log de diário para entradas do PowerShell.

journalctl --grep powershell

O daemon journald pode encaminhar mensagens de log para um servidor syslog (System Logging Protocol). Ative a ForwardToSysLog opção no arquivo de configuração journald se quiser usar o /etc/systemd/journald.conf log de syslog em seu sistema Linux. Essa é a configuração padrão para muitas distribuições do Linux.

Exibindo dados de log do PowerShell no syslog no Linux

Use o gerenciador de pacotes da sua distribuição Linux para instalar um servidor syslog , como o rsyslog, se quiser usar o log syslog em seu sistema Linux. Algumas distribuições Linux, como o Ubuntu, pré-instalam o rsyslog.

O protocolo syslog armazena mensagens de log em um formato de texto padronizado. Você pode usar qualquer utilitário de processamento de texto para consultar ou visualizar o conteúdo do syslog .

Por padrão, o syslog grava entradas de log no seguinte local:

  • Em distribuições baseadas em Debian, incluindo o Ubuntu: /var/log/syslog
  • Em distribuições baseadas em RHEL: /var/log/messages

O exemplo a seguir usa o cat comando para consultar entradas de syslog do PowerShell no Ubuntu.

cat /var/log/syslog | grep -i powershell

Formato de mensagem do Syslog

As mensagens de syslog têm o seguinte formato:

TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
  [EVENTID:TASK.OPCODE.LEVEL] MESSAGE
  • TIMESTAMP - Uma data/hora em que a entrada de log foi produzida.
  • MACHINENAME - O nome do sistema em que o log foi produzido.
  • PID - A ID do processo que gravou a entrada de log.
  • COMMITID - O ID de confirmação do git ou a tag usada para produzir a compilação.
  • TID - A ID do thread que gravou a entrada de log.
  • CID - O identificador de canal hexadecimal da entrada de log.
    • 0x10 = Operacional
    • 0x11 = Analítica
  • EVENTID - O identificador de evento da entrada de log.
  • TASK - O identificador de tarefa para a entrada de evento
  • OPCODE - O opcode para a entrada do evento
  • LEVEL - O nível de log para a entrada do evento
  • MESSAGE - A mensagem associada à entrada do evento

EVENTID, TASK, OPCODE e LEVEL são os mesmos valores usados ao fazer logon no log de eventos do Windows.

Gravar mensagem de log do PowerShell em um arquivo separado

Também é possível redirecionar as entradas de log do PowerShell para um arquivo separado. Quando as entradas de log do PowerShell são redirecionadas para um arquivo separado, elas não são mais registradas no arquivo syslog padrão.

As etapas a seguir configuram as entradas de log do PowerShell no Ubuntu para gravar em um arquivo de log chamado powershell.log.

  1. Crie um arquivo de configuração (conf) para a configuração de log do /etc/rsyslog.d PowerShell no diretório usando um editor de arquivo de texto, como nano. Prefixe o nome do arquivo com um número menor que o padrão. Por exemplo, 40-powershell.conf onde o padrão é 50-default.conf.

    sudo nano /etc/rsyslog.d/40-powershell.conf
    
  2. Adicione as seguintes informações ao 40-powershell.conf arquivo:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. Verifique se /etc/rsyslog.conf há uma instrução include para o novo arquivo. Pode ter uma declaração genérica que o inclua, como:

    $IncludeConfig /etc/rsyslog.d/*.conf
    

    Caso contrário, você precisará adicionar uma instrução include manualmente.

  4. Verifique se os atributos e permissões estão definidos adequadamente.

    ls -l /etc/rsyslog.d/40-powershell.conf
    
    -rw-r--r-- 1 root root   67 Nov 28 12:51 40-powershell.conf
    

    Se o arquivo 40-powershell.conf tiver propriedade ou permissões diferentes, conclua as seguintes etapas:

    1. Defina a propriedade como root.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. Definir permissões de acesso: root tem leitura/gravação, usuários têm leitura.

      sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
      
  5. Reinicie o serviço rsyslog .

    sudo systemctl restart rsyslog.service
    
  6. Execute pwsh para gerar informações do PowerShell para registrar.

    pwsh
    

    Observação

    O /var/log/powershell.log arquivo não é criado até que o serviço rsyslog seja reiniciado e o PowerShell gere informações para registrar.

  7. Consulte o powershell.log arquivo para verificar se as informações do PowerShell estão sendo registradas no novo arquivo.

    cat /var/log/powershell.log
    

Exibindo dados de log do PowerShell no macOS

O PowerShell registra no sistema de registro unificado da Apple, um recurso do macOS que permite a coleta e o armazenamento de logs do sistema e do aplicativo em um único local centralizado.

O sistema de registro unificado da Apple armazena mensagens de registro em formato binário. Use o aplicativo Console ou a ferramenta de log para consultar o sistema de log unificado para entradas do PowerShell.

Exibindo dados de log do PowerShell no aplicativo Console no macOS

O aplicativo Console no macOS é um utilitário que fornece uma interface gráfica do usuário para visualizar dados de log. O aplicativo Console está incluído no macOS por padrão e pode ser acessado abrindo a pasta Utilitários na pasta Aplicativos .

Use as seguintes etapas para exibir os dados de log do PowerShell no aplicativo Console no macOS:

  1. Procure o aplicativo Console e inicie-o.
  2. Selecione o nome da máquina em Dispositivos.
  3. No campo Pesquisar, insira pwsh o binário principal do PowerShell e pressione Enter.
  4. Altere o filtro de pesquisa de Any para Process.
  5. Clique em Iniciar.
  6. Execute pwsh para gerar informações do PowerShell para registrar.

A ID do processo para uma instância em execução do PowerShell é armazenada na $PID variável. Use as etapas a seguir para filtrar uma instância de processo específica do PowerShell no aplicativo Console .

  1. Execute uma instância do pwsh.
  2. Execute $PID na instância do PowerShell iniciada na etapa anterior para determinar sua ID de processo.
  3. Insira o ID do processo para pwsh no campo Pesquisar e pressione Enter.
  4. Altere o filtro de pesquisa de Any para PID.
  5. Clique em Iniciar.
  6. Gere informações do PowerShell para registrar a partir da instância do PowerShell iniciada na primeira etapa.

Para obter mais informações, consulte visualizar mensagens de registro no Console do Mac.

Exibindo dados de log do PowerShell na linha de comando no macOS

Para exibir dados de log do PowerShell em uma linha de comando no macOS, use o log comando no Terminal ou em outro aplicativo host do shell. Esses comandos podem ser executados no PowerShell, no shell Z (Zsh) ou no Bash.

No exemplo a seguir, o log comando é usado para mostrar os dados de log em seu sistema à medida que ocorrem em tempo real. O parâmetro process filtra os dados de log apenas para o pwsh processo. Se você tiver mais de uma instância em execução, o parâmetro process também aceitará um ID de pwsh processo como seu valor. O parâmetro level mostra mensagens no nível especificado e abaixo.

log stream --process pwsh --level info

Modos e níveis de dados de log do PowerShell no macOS

Por padrão, o subsistema do PowerShell registra mensagens de nível de informações na memória (modo) e mensagens de nível padrão no disco (persistência) no macOS. Esse comportamento pode ser alterado para habilitar um modo e nível de registro diferentes usando o log config comando.

O exemplo a seguir habilita o log de nível de informações e a persistência para o subsistema do PowerShell:

sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info

Use o parâmetro reset para reverter as configurações de log para os padrões do subsistema do PowerShell:

sudo log config --subsystem com.microsoft.powershell --reset

O log show comando pode ser usado para exportar itens de log. O log show comando fornece opções para exportar os últimos N itens, itens desde um determinado período de tempo ou itens dentro de um determinado intervalo de tempo.

Por exemplo, o comando a seguir exporta itens desde 9am on April 5 of 2022:

log show --info --start "2022-04-05 09:00:00" --process pwsh

Para obter mais informações, execute log show --help para exibir a ajuda do log show comando.

Você também pode considerar salvar os logs em um local mais seguro, como o agregador SIEM (Gerenciamento de Eventos e Informações de Segurança). Usando Microsoft Defender para Aplicativos de Nuvem, você pode configurar o SIEM no Azure. Para obter mais informações, consulte Integração de SIEM genérico.

Confira também