O WinRM Log Collector v2.2 é uma solução PowerShell avançada para configuração e gerenciamento do Windows Remote Management (WinRM) para coleta de logs via Windows Event Collector (WEC) e Windows Event Forwarding (WEF). Esta versão oferece funcionalidades completas para configuração, monitoramento e troubleshooting de ambientes WinRM.
- 🔧 11 Actions Completas - Configuração, monitoramento e troubleshooting
- 🛡️ Suporte HTTP/HTTPS - Listeners seguros com certificados
- 🔥 Gerenciamento de Firewall - Interface interativa para regras
- 📊 Relatórios Detalhados - Análise completa do sistema
- 🔐 Verificação de Permissões - Validação de usuários e grupos
- 📜 Sistema de Logs Avançado - Logging detalhado com rotação
- 🎯 Interface Intuitiva - Help integrado e exemplos práticos
- 🚀 Início Rápido
- 📖 Guia Completo
- 🎯 Actions Disponíveis
- ⚙️ Parâmetros de Configuração
- 🔧 Cenários Práticos
- 🛡️ Segurança e Boas Práticas
- 🔍 Troubleshooting
- 📚 Exemplos Avançados
- 📞 Suporte e Contribuição
# Clone o repositório
git clone https://github.com/mrhenrike/WinRM-Log-Collector.git
cd WinRM-Log-Collector
# Execute como Administrador
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser# Configurar listener HTTP básico
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType http -User "domain\serviceaccount"# Verificar configuração atual
.\winrmconfig_v2.2.ps1 -Action Status# Gerar relatório completo
.\winrmconfig_v2.2.ps1 -Action Report| Ação | Comando | Descrição |
|---|---|---|
| Status | -Action Status |
Verificar status do sistema |
| Enable HTTP | -Action Enable -ListenerType http -User "user" |
Configurar listener HTTP |
| Enable HTTPS | -Action Enable -ListenerType https -User "user" |
Configurar listener HTTPS |
| Disable | -Action Disable |
Remover listeners |
| Firewall | -Action ConfigureFirewall |
Gerenciar regras de firewall |
| Policies | -Action ConfigurePolicies |
Configurar políticas WinRM |
| Permissions | -Action CheckPermissions -User "user" |
Verificar permissões |
| Certificates | -Action ShowAllCerts |
Listar certificados |
| Export CA | -Action ExportCACert -ExportCertPath "path" |
Exportar certificado CA |
| Report | -Action Report |
Gerar relatório completo |
| Help | -Action ShowHelp |
Ajuda rápida |
| Help Long | -Action ShowHelpLong |
Ajuda detalhada |
- Windows Server 2008 R2 ou superior
- Windows 10/11 (para desenvolvimento)
- PowerShell 5.1 ou superior
- Privilégios administrativos obrigatórios
- Acesso ao registro do sistema
- Permissões de firewall para configuração
# Verificar módulos necessários
Get-Module -ListAvailable | Where-Object {$_.Name -match "NetSecurity|ActiveDirectory"}O script aceita múltiplos formatos de usuário:
| Formato | Exemplo | Descrição |
|---|---|---|
domain\user |
CONTOSO\joao.silva |
Usuário de domínio |
user@domain.com |
joao.silva@contoso.com |
Email format |
localuser |
administrator |
Usuário local |
built-in |
SYSTEM, NETWORK SERVICE |
Contas do sistema |
Configura listeners HTTP/HTTPS para coleta de logs.
# HTTP Listener (Recomendado para desenvolvimento)
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType http -User "domain\user"
# HTTPS Listener (Recomendado para produção)
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -User "domain\user" -ThumbPrint "ABC123..."
# Porta personalizada
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType http -Port 8080 -User "domain\user"Recursos:
- ✅ Configuração automática do serviço WinRM
- ✅ Adição automática ao grupo "Event Log Readers"
- ✅ Configuração de políticas WinRM
- ✅ Detecção automática de certificados
- ✅ Suporte a portas personalizadas
Remove listeners configurados com interface interativa.
# Remoção interativa (seleção manual)
.\winrmconfig_v2.2.ps1 -Action Disable
# Remoção de todos os listeners
.\winrmconfig_v2.2.ps1 -Action Disable -User "*"Recursos:
- ✅ Interface interativa para seleção
- ✅ Remoção de regras de firewall associadas
- ✅ Desativação do serviço WinRM (se necessário)
- ✅ Limpeza completa da configuração
Exibe status completo do WinRM e configurações relacionadas.
# Status completo do sistema
.\winrmconfig_v2.2.ps1 -Action Status
# Status com porta específica
.\winrmconfig_v2.2.ps1 -Action Status -Port 5985Informações Exibidas:
- 🔧 Serviços: WinRM, Firewall
- 📡 Listeners: HTTP/HTTPS ativos
- 🔥 Firewall: Regras WinRM/WEC
- 📋 Políticas: Configurações WinRM
- 🏢 Domínio: Status do controlador
Interface interativa para gerenciamento de regras de firewall.
# Gerenciamento interativo de firewall
.\winrmconfig_v2.2.ps1 -Action ConfigureFirewallOpções Disponíveis:
- Deletar regras específicas
- Deletar TODAS as regras WinRM
- Adicionar nova regra WinRM
- Desabilitar regras específicas
- Desabilitar TODAS as regras WinRM
- Sair
Configura políticas WinRM para otimizar a coleta de logs.
# Configurar políticas WinRM
.\winrmconfig_v2.2.ps1 -Action ConfigurePoliciesPolíticas Configuradas:
- ✅ Allow Basic Authentication: Habilitado
- ✅ Allow Unencrypted Traffic: Desabilitado
- ✅ Allow Remote Server Management: Configurado com filtros IP
- ✅ Configure Log Access: Configurado com SID específico
Analisa permissões detalhadas para coleta de logs.
# Verificar permissões de usuário
.\winrmconfig_v2.2.ps1 -Action CheckPermissions -User "domain\user"Verificações Realizadas:
- 👥 Event Log Readers Group: Membro do grupo
- 🔧 WMI Permissions: Acesso ao WMI
- 📡 WinRM Access: Configuração acessível
- 📜 Event Log Access: Leitura de logs
- 🔍 Registry Permissions: Acesso ao registro
Exibe todos os certificados disponíveis para WinRM.
# Listar todos os certificados
.\winrmconfig_v2.2.ps1 -Action ShowAllCertsInformações Exibidas:
- 📜 Certificados com Server Authentication EKU (recomendados)
- 📜 Outros certificados (podem não ser adequados)
- 📊 Resumo detalhado com contadores
- 🔍 Análise de adequação para HTTPS
Exporta certificado CA para configuração de clientes.
# Exportar certificado CA
.\winrmconfig_v2.2.ps1 -Action ExportCACert -ExportCertPath "C:\temp\ca-cert.cer"Recursos:
- ✅ Seleção automática do certificado mais recente
- ✅ Exportação em formato .cer
- ✅ Validação de parâmetros obrigatórios
- ✅ Feedback detalhado do processo
Gera relatório completo do sistema WinRM.
# Gerar relatório completo
.\winrmconfig_v2.2.ps1 -Action ReportDados Coletados:
- 💻 Informações do Sistema: OS, domínio, arquitetura
- 📡 Status WinRM: Serviço, listeners, configurações
- 📜 Certificados: Contagem e detalhes
- 🔥 Firewall: Regras WinRM/WEC
- 📋 Políticas: Configurações e status
- 💡 Recomendações: Sugestões automáticas
Exibe ajuda rápida e direta.
# Ajuda simples
.\winrmconfig_v2.2.ps1 -Action ShowHelpExibe ajuda completa com exemplos e parâmetros.
# Ajuda detalhada
.\winrmconfig_v2.2.ps1 -Action ShowHelpLong| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
-Action |
String | Ação a executar | Enable, Status, Report |
| Parâmetro | Obrigatório | Descrição | Exemplo |
|---|---|---|---|
-User |
✅ | Usuário para coleta | domain\user |
-ListenerType |
❌ | Tipo de listener | http, https |
-Port |
❌ | Porta personalizada | 5985, 8080 |
-ThumbPrint |
❌ | Thumbprint do certificado | ABC123... |
| Parâmetro | Obrigatório | Descrição | Exemplo |
|---|---|---|---|
-ExportCertPath |
✅ | Caminho para exportar | C:\temp\ca.cer |
| Parâmetro | Obrigatório | Descrição | Exemplo |
|---|---|---|---|
-User |
✅ | Usuário para verificar | domain\user |
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
-AuthType |
String | basic |
Tipo de autenticação |
-LogLevel |
String | Error |
Nível de log |
-ConfigFile |
String | config-sample.json |
Arquivo de configuração |
-LogPath |
String | .\log |
Caminho dos logs |
# AuthType válidos
- basic, negotiate, kerberos
# LogLevel válidos
- Error, Warning, Info, Debug
# Porta válida
- 1-65535
# ListenerType válidos
- http, httpsObjetivo: Configurar WinRM HTTPS para coleta de logs em ambiente corporativo.
# 1. Verificar permissões do usuário
.\winrmconfig_v2.2.ps1 -Action CheckPermissions -User "wec-collector@contoso.com"
# 2. Listar certificados disponíveis
.\winrmconfig_v2.2.ps1 -Action ShowAllCerts
# 3. Configurar listener HTTPS
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -User "wec-collector@contoso.com" -ThumbPrint "ABC123..."
# 4. Configurar políticas WinRM
.\winrmconfig_v2.2.ps1 -Action ConfigurePolicies
# 5. Configurar firewall
.\winrmconfig_v2.2.ps1 -Action ConfigureFirewall
# 6. Exportar certificado CA
.\winrmconfig_v2.2.ps1 -Action ExportCACert -ExportCertPath "C:\WEC\Certificates\ca-cert.cer"
# 7. Verificar configuração
.\winrmconfig_v2.2.ps1 -Action Status
# 8. Gerar relatório final
.\winrmconfig_v2.2.ps1 -Action ReportObjetivo: Configuração rápida HTTP para testes e desenvolvimento.
# 1. Configuração rápida HTTP
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType http -User "testuser" -Port 5985
# 2. Verificar status
.\winrmconfig_v2.2.ps1 -Action Status
# 3. Gerar relatório
.\winrmconfig_v2.2.ps1 -Action ReportObjetivo: Diagnosticar problemas em ambiente WinRM existente.
# 1. Verificar status atual
.\winrmconfig_v2.2.ps1 -Action Status
# 2. Verificar permissões
.\winrmconfig_v2.2.ps1 -Action CheckPermissions -User "domain\user"
# 3. Listar certificados
.\winrmconfig_v2.2.ps1 -Action ShowAllCerts
# 4. Gerar relatório detalhado
.\winrmconfig_v2.2.ps1 -Action Report
# 5. Verificar firewall
.\winrmconfig_v2.2.ps1 -Action ConfigureFirewallObjetivo: Migrar de configuração antiga para nova versão.
# 1. Backup da configuração atual
.\winrmconfig_v2.2.ps1 -Action Report > backup-config.txt
# 2. Remover configuração antiga
.\winrmconfig_v2.2.ps1 -Action Disable -User "*"
# 3. Configurar nova versão
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -User "domain\user"
# 4. Verificar migração
.\winrmconfig_v2.2.ps1 -Action Status- Server Authentication EKU obrigatório
- Validade adequada (mínimo 1 ano)
- Thumbprint correto para identificação
- Certificado confiável pela CA
# Usar certificados com Server Authentication EKU
.\winrmconfig_v2.2.ps1 -Action ShowAllCerts
# Configurar HTTPS com certificado válido
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -User "domain\user" -ThumbPrint "VALID_THUMBPRINT"- Kerberos: Recomendado para ambientes de domínio
- Negotiate: Fallback automático
- Basic: Apenas para desenvolvimento/teste
# Verificar permissões antes da configuração
.\winrmconfig_v2.2.ps1 -Action CheckPermissions -User "domain\user"
# Usar contas de serviço dedicadas
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -User "wec-service@domain.com"- IPs específicos para comunicação WEC
- Portas padrão (5985 HTTP, 5986 HTTPS)
- Perfis de rede adequados (Domain/Private)
# Verificar regras de firewall
.\winrmconfig_v2.2.ps1 -Action ConfigureFirewall
# Monitorar status regularmente
.\winrmconfig_v2.2.ps1 -Action Status- Allow Basic Authentication: Habilitado (se necessário)
- Allow Unencrypted Traffic: Desabilitado
- Allow Remote Server Management: Configurado
- Configure Log Access: Configurado com SID específico
# Configurar políticas automaticamente
.\winrmconfig_v2.2.ps1 -Action ConfigurePolicies
# Verificar configuração
.\winrmconfig_v2.2.ps1 -Action StatusCausa: Execução sem privilégios administrativos Solução:
# Execute o PowerShell como Administrador
# Clique com botão direito → "Executar como Administrador"Causa: Usuário especificado não existe Solução:
# Verificar usuário local
Get-LocalUser -Name "username"
# Verificar usuário de domínio
Get-ADUser -Identity "username"
# Usar formato correto
.\winrmconfig_v2.2.ps1 -Action CheckPermissions -User "domain\user"Causa: Certificado não encontrado ou inválido Solução:
# Listar certificados disponíveis
.\winrmconfig_v2.2.ps1 -Action ShowAllCerts
# Verificar certificados no store
Get-ChildItem Cert:\LocalMachine\My
# Usar thumbprint correto
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -ThumbPrint "CORRECT_THUMBPRINT"Causa: Problemas com regras de firewall Solução:
# Verificar perfil de rede
Get-NetConnectionProfile
# Configurar firewall interativamente
.\winrmconfig_v2.2.ps1 -Action ConfigureFirewall
# Verificar regras existentes
Get-NetFirewallRule -DisplayName "*WinRM*"Causa: Serviço WinRM não iniciado Solução:
# Verificar status do serviço
Get-Service WinRM
# Iniciar serviço manualmente
Start-Service WinRM
# Configurar automaticamente
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType http -User "domain\user"- Localização:
.\log\winrmconfig_YYYYMMDD.log - Rotação: Automática diária
- Níveis: Error, Warning, Info, Debug
# Executar com logging debug
.\winrmconfig_v2.2.ps1 -Action Enable -LogLevel Debug -User "domain\user"# Verificar logs recentes
Get-Content .\log\winrmconfig_*.log | Select-Object -Last 50
# Filtrar por nível
Get-Content .\log\winrmconfig_*.log | Where-Object {$_ -match "ERROR"}
# Analisar configuração
.\winrmconfig_v2.2.ps1 -Action Report# Testar configuração WinRM
winrm get winrm/config
# Testar listeners
winrm enumerate winrm/config/listener
# Testar conectividade
winrm identify -r:http://localhost:5985# Testar do servidor WEC
wecutil qc /q
# Testar do cliente
winrm identify -r:https://wec-server:5986# Verificar certificados
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*server*"}
# Testar certificado específico
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Thumbprint -eq "THUMBPRINT"}
$cert | Format-ListObjetivo: Configurar múltiplos servidores para coleta centralizada.
# Script para múltiplos servidores
$servers = @("server1", "server2", "server3")
$user = "wec-collector@domain.com"
foreach ($server in $servers) {
Write-Host "Configurando $server..." -ForegroundColor Green
# Configurar WinRM
Invoke-Command -ComputerName $server -ScriptBlock {
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -User $using:user
}
# Verificar configuração
Invoke-Command -ComputerName $server -ScriptBlock {
.\winrmconfig_v2.2.ps1 -Action Status
}
}Objetivo: Script de monitoramento contínuo.
# Script de monitoramento
while ($true) {
$status = .\winrmconfig_v2.2.ps1 -Action Status
if ($status -match "Inactive") {
Write-Host "WinRM inativo detectado - reconfigurando..." -ForegroundColor Yellow
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType http -User "domain\user"
}
Start-Sleep -Seconds 300 # Verificar a cada 5 minutos
}Objetivo: Backup automático da configuração.
# Backup da configuração
$backupDate = Get-Date -Format "yyyyMMdd_HHmmss"
$backupFile = ".\backup\winrm_config_$backupDate.json"
# Gerar backup
.\winrmconfig_v2.2.ps1 -Action Report | Out-File $backupFile
# Restore (exemplo)
$config = Get-Content $backupFile | ConvertFrom-Json
# Aplicar configuração restaurada...Objetivo: Configuração completa WEC + WinRM.
# 1. Configurar WinRM no servidor de eventos
.\winrmconfig_v2.2.ps1 -Action Enable -ListenerType https -User "wec-collector@domain.com"
# 2. Exportar certificado
.\winrmconfig_v2.2.ps1 -Action ExportCACert -ExportCertPath "C:\WEC\ca-cert.cer"
# 3. Configurar WEC (exemplo)
wecutil cs subscription.xml
# 4. Verificar configuração
.\winrmconfig_v2.2.ps1 -Action Status
.\winrmconfig_v2.2.ps1 -Action Report- Nome: Andre Henrique (Uniao Geek)
- Email: contato@uniaogeek.com.br
- LinkedIn: @mrhenrike
- Instagram: @uniaogeek
- GitHub: @mrhenrike
- GitHub: WinRM-Log-Collector
- Issues: Reportar problemas
- Discussions: Discussões e sugestões
- README (PT-BR): README.md
- Changelog: CHANGELOG.md
- License: MIT License
Contribuições são bem-vindas! Para contribuir:
- Fork o repositório
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Para reportar bugs:
- Use o sistema de Issues
- Inclua informações detalhadas:
- Sistema operacional
- Versão do PowerShell
- Comando executado
- Mensagem de erro completa
- Logs relevantes
- ✅ Testes Completos: Validação linha por linha de todas as funcionalidades
- ✅ Logs Aprimorados: Sistema de logging com componentes e níveis detalhados
- ✅ Interface Interativa: Menus interativos para ConfigureFirewall e Disable
- ✅ Validação de Usuários: Verificação robusta de usuários locais e AD
- ✅ Relatórios Detalhados: Análise completa do sistema com recomendações
- ✅ Tratamento de Erros: Tratamento robusto de exceções e avisos
- ✅ Correção de Referências: Todas as referências atualizadas para v2.2
- ✅ Validação de Certificados: Listagem organizada por categoria EKU
- ✅ Políticas WinRM: Configuração automática de políticas ideais
- ✅ Firewall Management: Interface interativa para gerenciamento de regras
- ✅ Documentação: README atualizado com Quick Reference
- ✅ Help Commands: Referências de versão corrigidas
- ✅ Logging System: Componentes e níveis de log organizados
- ✅ Error Handling: Tratamento melhorado de exceções de rede
- ✅ User Validation: Validação aprimorada de usuários built-in
- ✅ Parsing de Usuários: Suporte a múltiplos formatos
- ✅ Configuração de Políticas: Aplicação correta de políticas WinRM
- ✅ Gerenciamento de Firewall: Interface melhorada
- ✅ Verificação de Certificados: Análise precisa de EKU
- ✅ Consolidação de scripts originais
- ✅ Sistema de logging aprimorado
- ✅ Configuração de firewall
- ✅ Gerenciamento de certificados
- ✅ Documentação básica
- ✅ Configuração básica de firewall
- ✅ Funcionalidade limitada
- ✅ Lançamento inicial
- ✅ Configuração básica WinRM
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
- Microsoft - Por fornecer a documentação WinRM
- Comunidade PowerShell - Por feedback e sugestões
- Contribuidores - Por melhorias e correções
- Usuários - Por relatórios de bugs e sugestões
Feito com ❤️ por Uniao Geek
Para mais informações, visite: uniaogeek.com.br