PowerShell:
Registro de Logs

Como fazer:

Aqui vai a essência de como adicionar um registro básico aos seus scripts:

# Criando uma mensagem de log simples
Write-Host "Info: Iniciando o processo do script."

# Escrevendo em um arquivo
"Info: Esta é uma mensagem registrada." | Out-File -Append myLog.log

# Usando o cmdlet embutido para um registro mais detalhado
Start-Transcript -Path "./detailedLog.log"
Write-Output "Atenção: Algo não está totalmente correto."
# ... seu script faz coisas
Stop-Transcript

# Saída de detailedLog.log
******************************
Transcrição do Windows PowerShell iniciada
Hora de início: 20230324112347
Usuário   : PShellGuru@example.com
Usuário como Admin: PShellGuru@example.com
Nome da Configuração: 
Máquina  : PS-DEVBOX (Microsoft Windows NT 10.0.17763.0)
Aplicativo Host: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ID do Processo: 2024
Versão do PS: 7.1.2

Agora, nos seus registros, há um relato detalhado do que o seu código tem feito.

Aprofundando:

Historicamente, o registro é tão antigo quanto a programação em si. É como o diário de bordo de um capitão, mas para software. No passado, poderiam ter sido impressões ou máquinas de teletipo; agora, trata-se de arquivos e sofisticados sistemas de gerenciamento de registros.

Quando você está na trincheira do PowerShell, Write-Host é rápido e direto, mas apenas expele texto para o console, não é ótimo para manter registros. Out-File oferece uma maneira simples de jogar texto em um arquivo, mas para a informação real, você vai querer Start-Transcript e Stop-Transcript, que registram tudo — entrada, saída, o pacote completo.

Alternativas? Claro, se você está gerenciando uma empresa, você pode olhar para o Log de Eventos do Windows ou usar softwares como Logstash, mas para o seu script diário, fique com as ferramentas do PowerShell. Quanto à implementação, lembre-se de registrar de forma inteligente – muito pouco e é inútil, demais e é apenas ruído branco.

Veja Também:

Confira estes para ter um controle sobre tudo em registro no PowerShell: