Share via


about_Logging_Non-Windows

Breve descrição

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 comandos do PowerShell.

Para obter informações sobre como registrar em log 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 man páginas para sua distribuição Linux.
  • No macOS, é usado o sistema de registro unificado da Apple. Para obter mais informações, consulte a documentação do desenvolvedor da Apple sobre registro.

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

  • Log de módulos - Registre os eventos de execução do pipeline para membros de módulos especificados. O registro em log do módulo deve ser habilitado para a sessão e módulos específicos. Para obter mais informações sobre como configurar esse log, 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 PSReadLine :

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Log de blocos de script - Registre o processamento de comandos, blocos de script, funções e scripts 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 processa. Uma vez habilitada, qualquer nova sessão do PowerShell registra essas informações.

    Nota

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

Configurando o registro em log no Linux ou macOS

A configuração para fazer login no Linux e 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 detalhada ou habilitando 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"
}

A seguir está 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.

  • LogIdentity
    • Valores: <string name>, powershell
    • Descrição: o nome a ser usado ao registrar. A identidade padrão é powershell. Esse valor pode ser usado para diferenciar duas instâncias de uma instalação do PowerShell, como uma versão versão e uma versão beta. Esse valor também é usado para redirecionar a saída do log para um arquivo separado.
  • LogCanais
    • Valores: Operational, Analytic
    • Descrição: Os canais a habilitar. Separe os valores com uma vírgula ao especificar mais de um. O valor predefinido é 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 verbosidade. O valor que você escolher habilita a si mesmo e todos os valores antes dele. O valor predefinido é Informational.
  • LogPalavras-chave
    • Valores: , , , , , Host, Cmdlets, SerializerSession, , TransportProtocolPipelineRunspaceManagedPlugin
    • 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 são habilitadas e alterar esse valor só é útil para solução de problemas especializada.
  • PowerShellPolíticas
    • Descrição: A configuração PowerShellPolicies contém as opções ModuleLogging, ProtectedEventLog e ScriptBlockLogging . Para obter mais informações, consulte Definições de configuração comuns.

Exibindo dados de log do PowerShell no diário no Linux

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

O daemon registrado no diário 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 registrado no diário pode encaminhar mensagens de log para um servidor syslog (System Logging Protocol). Habilite a opção no arquivo de configuração com registro no /etc/systemd/journald.confdiário se quiser usar o ForwardToSysLog log syslog em seu sistema Linux. Esta é a configuração padrão para muitas distribuições Linux.

Exibindo dados de log do PowerShell no syslog no Linux

Use o gerenciador de pacotes para sua distribuição Linux para instalar um servidor syslog , como rsyslog , se você 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 exibir 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 syslog do PowerShell no Ubuntu.

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

Formato de mensagem Syslog

As mensagens 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 onde o log foi produzido.
  • PID - A ID do processo que escreveu a entrada de log.
  • COMMITID - O ID ou tag git commit usado para produzir a compilação.
  • TID - O ID do thread que escreveu a entrada de log.
  • CID - O identificador de canal hexadecimal da entrada de log.
    • 0x10 = Operacional
    • 0x11 = Analítico
  • 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 registrar 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. Prefira 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 tem uma instrução include para o novo arquivo. Pode ter uma declaração genérica que o inclua, tais como:

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

    Se isso não acontecer, 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 40-powershell.conf arquivo 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, os usuários leram.

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

    pwsh
    

    Nota

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

  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 log 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 registo unificado da Apple armazena mensagens de registo 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 return.
  4. Altere o filtro de pesquisa de Any para Process.
  5. Clique em Iniciar.
  6. Execute pwsh para gerar informações do PowerShell para log.

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

  1. Execute uma instância de 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 no pwsh campo Pesquisar e pressione return.
  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 Exibir mensagens de log no Console no Mac.

Exibindo dados de log do PowerShell a partir da linha de comando no macOS

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

No exemplo a seguir, o log comando é usado para mostrar os dados de log em seu sistema como eles estão ocorrendo 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á uma 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 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 diferente e nível de log usando o log config comando.

O exemplo a seguir habilita o registro em log e a persistência no nível de informações para o subsistema 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 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 tempo ou itens dentro de um determinado período 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 para o log show comando.

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

Consulte também