Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Breve descrição
O PowerShell registra operações internas do mecanismo, provedores e cmdlets.
Descrição longa
O PowerShell regista detalhes das operações do PowerShell, como o início e a paragem do motor, bem como o início e a paragem dos fornecedores. Ele também registra detalhes sobre comandos do PowerShell.
Para obter informações sobre registos no Windows PowerShell 5.1, consulte about_Logging.
A localização dos registos do PowerShell depende da plataforma alvo.
- Em Linux, o PowerShell regista no diário systemd , que pode encaminhar para um servidor syslog . Para obter mais informações, consulte as páginas de
manpara sua distribuição Linux. - No macOS, é usado o sistema de registro unificado da Apple. Para obter mais informações, consulte documentação do desenvolvedor da Apple sobre registro de.
O PowerShell dá suporte à configuração de duas categorias de registro:
Registo de módulos - Registe 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 de 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 ativar o registo de módulo para o módulo PSReadLine:
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine TrueRegisto de blocos de scripts - Registar o processamento de comandos, blocos de script, funções e scripts, quer sejam invocados de forma interativa ou através de automação.
Quando ativas o Registo de Blocos de Script, o PowerShell regista o conteúdo de todos os blocos de script que processa. Uma vez habilitada, qualquer nova sessão do PowerShell registra essas informações.
Observação
Recomenda-se ativar o registo de eventos protegidos ao usar o registo de blocos de script para qualquer finalidade diferente 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 logon no Linux e macOS é armazenada no arquivo powershell.config.json. O arquivo powershell.config.json é um arquivo JSON formatado que reside no diretório $PSHOME do PowerShell. 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 registro em log no canal Operational. Você pode alterar a configuração se precisar de saída de log adicional, como verbosa 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 fazer login. 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 e uma versão beta. Esse valor também é usado para redirecionar a saída do log para um arquivo separado.
- Valores:
-
LogChannels
- Valores:
Operational,Analytic - Descrição: Os canais a habilitar. Separe os valores com uma vírgula ao especificar mais de um. O valor padrão é
Operational.
- Valores:
-
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 padrão é
Informational.
- Valores:
-
LogKeywords
- Valores:
Runspace,Pipeline,Protocol,Transport,Host,Cmdlets,Serializer,Session,ManagedPlugin - Descrição: As palavras-chave fornecem a capacidade de limitar o registo de log aos 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.
- Valores:
-
PowerShellPolicies
- Descrição: A configuração PowerShellPolicies contém as opções ModuleLogging, ProtectedEventLogginge 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 regista no 'systemd journal' usando o daemon journald em distribuições Linux como Ubuntu e Red Hat Enterprise Linux (RHEL).
O daemon do journald armazena mensagens de log num formato binário. Use o utilitário journalctl para consultar o log de diário para entradas do PowerShell.
journalctl --grep powershell
O daemon
Exibindo dados de log do PowerShell no syslog no Linux
Use o gerenciador de pacotes para sua distribuição Linux para instalar um servidor de syslog
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 syslog conteúdo.
Por padrão, syslog grava entradas de log no seguinte local:
- Em distribuições baseadas em Debian, incluindo Ubuntu:
/var/log/syslog - Em distribuições baseadas em RHEL:
/var/log/messages
O exemplo a seguir usa o comando
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 - 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 git commit ID ou tag usada 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 da tarefa para a entrada do evento
- OPCODE - O opcode para a entrada do evento
- NÍVEL - O nível de log para a entrada do evento
- MENSAGEM - A mensagem associada à entrada do evento
EVENTID, TASK, OPCODEe 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.
Crie um arquivo de configuração (
conf) para a configuração de log do PowerShell no diretório/etc/rsyslog.dusando um editor de arquivo de texto, comonano. Prefixe o nome do ficheiro com um número que seja menor que o padrão. Por exemplo,40-powershell.confonde o padrão é50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.confAdicione as seguintes informações ao arquivo
40-powershell.conf::syslogtag, contains, "powershell[" /var/log/powershell.log & stopVerifique se
/etc/rsyslog.conftem uma instrução include para o novo arquivo. Pode ter uma declaração genérica que o inclua, tais como:$IncludeConfig /etc/rsyslog.d/*.confSe isso não acontecer, terás de adicionar uma instrução include manualmente.
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.confSe o arquivo
40-powershell.conftiver propriedade ou permissões diferentes, conclua as seguintes etapas:Defina a propriedade para raiz.
sudo chown root:root /etc/rsyslog.d/40-powershell.confDefinir permissões de acesso: raiz tem leitura/gravação, os usuários têm leitura.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Reinicie o serviço rsyslog
. sudo systemctl restart rsyslog.serviceExecute o
pwshpara gerar informações do PowerShell para registo.pwshObservação
O arquivo
/var/log/powershell.lognão é criado até que o serviço rsyslog seja reiniciado e o PowerShell gere informações para registro.Consulte o arquivo
powershell.logpara 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 regista no sistema de registo unificado da Apple, uma funcionalidade do macOS que permite a recolha e o armazenamento de registos de sistema e de aplicações num único local centralizado.
O sistema de registo unificado da Apple armazena mensagens de registo em formato binário. Você deve usar a ferramenta log para consultar o sistema de log unificado para eventos de log do PowerShell. Os eventos de log do PowerShell não aparecem no aplicativo Console no macOS. A aplicação de consola foi projetada para o sistema de registo antigo baseado em syslog, que antecede o sistema unificado de registo.
Exibindo dados de log do PowerShell a partir da linha de comando no macOS
Para visualizar dados de log do PowerShell a partir de uma linha de comando no macOS, utilize o comando log no Terminal ou em outro aplicativo host de shell. Esses comandos podem ser executados a partir do PowerShell, Z Shellou Bash.
No exemplo a seguir, o comando log é usado para mostrar os dados de log em seu sistema como eles estão ocorrendo em tempo real. O processo parâmetro filtra os dados de log apenas para o processo pwsh. Se tiver mais de uma instância de
log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info
O comando log show pode ser usado para exportar itens de log. O comando log show 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, 2022:
log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"
Para obter mais informações, execute log show --help para exibir a ajuda para o comando log show.
Você também pode exportar os dados de log no formato JSON, o que permite converter os dados do evento em objetos do PowerShell. O exemplo a seguir gera os eventos no formato JSON. O cmdlet ConvertFrom-Json é usado para converter os dados JSON em objetos do PowerShell, que são armazenados na variável $logRecord.
log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
ConvertFrom-Json | Set-Variable logRecord
Você também pode considerar salvar os logs num local mais seguro, como um 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 Generic SIEM integration.
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 comando log config.
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
Consulte também
- Para de syslog do Linux
e rsyslog.conf informações, consulte as páginas delocais do computador Linux - Para obter informações sobre de registro de
do macOS, consulte documentação do desenvolvedor da Apple sobre como registrar - Para Windows, consulte about_Logging_Windows
- Integração genérica de SIEM