Administração
e PowerShell
Um bom administrador de sistemas gere o servidor remotamente, monitoriza eventos, automatiza tarefas com PowerShell e garante a existência de backups. Neste módulo final consolidamos estas competências.
Gestão Remota
Em ambientes profissionais, nunca acedemos fisicamente ao servidor. Utilizamos ferramentas de gestão remota.
Remote Desktop (RDP)
Acesso à interface gráfica do servidor remotamente. Porta 3389. Activa com sysdm.cpl → Remote.
PowerShell Remoting
Executa comandos PowerShell num servidor remoto. Usa Enter-PSSession ou Invoke-Command.
RSAT
Remote Server Administration Tools — instala ferramentas do servidor (ADUC, DHCP, DNS...) no teu PC Windows 10/11.
Windows Admin Center
Interface web moderna para gerir servidores Windows. Gratuito, da Microsoft. Substitui muitas ferramentas antigas.
# Ativar PowerShell Remoting no servidor
Enable-PSRemoting -Force
# Abrir sessão interativa num servidor remoto
Enter-PSSession -ComputerName "DC-LAB01" `
-Credential (Get-Credential "EMPRESA\Administrator")
# Executar comando numa máquina remota (sem sessão interativa)
Invoke-Command -ComputerName "DC-LAB01" `
-Credential (Get-Credential) `
-ScriptBlock { Get-Service | Where-Object Status -eq "Running" }
# Executar script num conjunto de servidores
$servidores = "DC-LAB01", "SRV-FILE01", "SRV-WEB01"
Invoke-Command -ComputerName $servidores -ScriptBlock {
[PSCustomObject]@{
Servidor = $env:COMPUTERNAME
RAM_Livre = (Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory
CPU_Uso = (Get-CimInstance Win32_Processor).LoadPercentage
}
}
Event Viewer — Visualizador de Eventos
O Event Viewer (eventvwr.msc) regista tudo o que acontece no servidor. É a primeira ferramenta a consultar quando algo corre mal.
| Log | O que regista | Quando consultar |
|---|---|---|
| Application | Eventos de aplicações (erros, avisos, informações) | Aplicações com falhas |
| Security | Logins, logouts, tentativas falhadas, alterações de políticas | Investigação de segurança |
| System | Eventos do SO — serviços, drivers, hardware | Falhas de arranque, crashes |
| Directory Service | Replicação AD, erros de autenticação | Problemas com AD |
| DNS Server | Consultas DNS, erros de zona | Falhas de resolução DNS |
# Ver últimos 20 erros no log System
Get-EventLog -LogName System -EntryType Error -Newest 20
# Ver tentativas de login falhadas (Event ID 4625) — log Security
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4625 # Failed logon
StartTime = (Get-Date).AddHours(-24) # últimas 24 horas
} | Select-Object TimeCreated, Message | Format-Table -Wrap
# Ver reinícios do sistema nas últimas 48h
Get-WinEvent -FilterHashtable @{
LogName = 'System'
Id = 1074 # System shutdown/restart
StartTime = (Get-Date).AddHours(-48)
}
# Exportar log para CSV para análise
Get-EventLog -LogName Application -Newest 100 `
| Export-Csv "C:\Logs\app-eventos.csv" -NoTypeInformation
PowerShell — Automação
O PowerShell permite automatizar tarefas repetitivas. Aqui estão padrões fundamentais para administração de servidores.
# Script de relatório de saúde do servidor
function Get-ServidorSaude {
param([string]$Servidor = $env:COMPUTERNAME)
$os = Get-CimInstance Win32_OperatingSystem -ComputerName $Servidor
$cpu = Get-CimInstance Win32_Processor -ComputerName $Servidor
$disco = Get-CimInstance Win32_LogicalDisk -ComputerName $Servidor `
-Filter "DriveType=3"
[PSCustomObject]@{
Servidor = $Servidor
SO = $os.Caption
Uptime_Dias = [math]::Round(($os.LocalDateTime - $os.LastBootUpTime).TotalDays, 1)
RAM_Total_GB = [math]::Round($os.TotalVisibleMemorySize / 1MB, 1)
RAM_Livre_GB = [math]::Round($os.FreePhysicalMemory / 1MB, 1)
CPU_Uso_Pct = $cpu.LoadPercentage
Disco_C_GB = [math]::Round($disco.Size / 1GB, 1)
Disco_C_Livre= [math]::Round($disco.FreeSpace / 1GB, 1)
}
}
# Usar a função
Get-ServidorSaude -Servidor "DC-LAB01" | Format-List
# Formato do CSV: Nome,Apelido,Username,OU
# Ex: João,Silva,joao.silva,OU=Professores,OU=Escola,DC=escola,DC=local
$usuarios = Import-Csv "C:\Scripts\utilizadores.csv"
foreach ($u in $usuarios) {
try {
New-ADUser `
-GivenName $u.Nome `
-Surname $u.Apelido `
-Name "$($u.Nome) $($u.Apelido)" `
-SamAccountName $u.Username `
-UserPrincipalName "$($u.Username)@escola.local" `
-Path $u.OU `
-AccountPassword (ConvertTo-SecureString "Temp@2024!" -AsPlainText -Force) `
-ChangePasswordAtLogon $true `
-Enabled $true
Write-Host "✓ Criado: $($u.Username)" -ForegroundColor Green
}
catch {
Write-Host "✗ Erro em $($u.Username): $_" -ForegroundColor Red
}
}
Backup e Recuperação
Sem backup, qualquer falha de hardware, ransomware ou erro humano pode ser catastrófico. A regra 3-2-1 é o mínimo recomendado.
Regra 3-2-1 de backup:
3 cópias dos dados · 2 tipos de suporte diferentes · 1 cópia fora do local (offsite/cloud)
# Instalar feature de backup
Install-WindowsFeature -Name Windows-Server-Backup
# Criar backup manual do estado do sistema (System State)
# Inclui AD, registo, ficheiros de arranque — essencial para recuperar DC
wbadmin start systemstatebackup -backupTarget:D: -quiet
# Agendar backup diário (usando Task Scheduler via PS)
$action = New-ScheduledTaskAction -Execute "wbadmin" `
-Argument "start systemstatebackup -backupTarget:D: -quiet"
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"
Register-ScheduledTask -TaskName "BackupDiario" `
-Action $action -Trigger $trigger `
-RunLevel Highest -Force
# Ver status do último backup
wbadmin get status
Monitorização de Desempenho
# Ver processos que mais consomem CPU (top 10)
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 `
| Format-Table Name, CPU, WorkingSet -AutoSize
# Monitorizar uso de disco em todos os volumes
Get-PSDrive -PSProvider FileSystem | Select-Object `
Name,
@{N="Total_GB"; E={[math]::Round(($_.Used + $_.Free) / 1GB, 1)}},
@{N="Livre_GB"; E={[math]::Round($_.Free / 1GB, 1)}},
@{N="Usado_Pct"; E={[math]::Round($_.Used / ($_.Used + $_.Free) * 100, 1)}}
# Ver serviços parados que deveriam estar a correr
Get-Service | Where-Object { $_.Status -ne "Running" -and $_.StartType -eq "Automatic" }
# Reiniciar um serviço específico
Restart-Service -Name "DNS" -Force
Restart-Service -Name "DHCP" -Force
# Script de alerta: envia aviso se disco C tiver menos de 10% livre
$disco = Get-PSDrive C
$livPct = [math]::Round($disco.Free / ($disco.Used + $disco.Free) * 100, 1)
if ($livPct -lt 10) {
Write-Warning "⚠️ Disco C: apenas $livPct% livre! Intervenção necessária."
# Aqui podias enviar email ou criar evento no Event Viewer
}
Lab 5 — Administração completa da infraestrutura
Construir e documentar uma infraestrutura escolar completa
- Infraestrutura: Tens o servidor
DC-LAB01com AD DS instalado e o domínioescola.localconfigurado. Verifica que DNS e DHCP estão a funcionar. - AD: Cria a estrutura:
OU=Escola → OU=Professores, OU=Alunos, OU=Computadores. Cria 5 professores e 10 alunos via script PowerShell com CSV. - GPO: Cria e aplica uma GPO à OU Alunos que: desactive o Painel de Controlo, defina o fundo de ecrã para uma imagem da escola, e bloqueie a instalação de software.
- DHCP: Configura um âmbito para
192.168.1.100–192.168.1.200com exclusão de .1 a .20. Cria uma reserva para a "impressora da sala" com MAC fictício. - DNS: Cria registos A para
fileserver(192.168.1.30),webserver(192.168.1.31) e um CNAMEintranetapontando para webserver. - Monitorização: Escreve um script PS que verifica: espaço em disco (<20% → aviso), serviços AD/DNS/DHCP a correr, e últimos 5 erros no Event Log. Guarda o relatório em
C:\Relatorios\saude.txt. - Backup: Agenda um backup do System State às 03:00 todos os dias para a unidade D:.
- Documentação: Cria um documento Word com: diagrama da rede, lista de IPs, utilizadores criados, GPOs aplicadas e procedimento de recuperação.
escola.local, e verifica que as GPOs dos alunos se aplicam quando entras com uma conta de aluno. As GPOs dos professores não devem restringir o Painel de Controlo.
Revisão geral — todos os módulos
1. Qual das seguintes afirmações sobre o PowerShell Remoting é verdadeira?
2. No Event Viewer, que Event ID indica uma tentativa de login falhada?
3. A regra de backup 3-2-1 significa:
4. [Revisão Módulo 3] Qual é o propósito principal das Group Policy Objects (GPOs)?
Próximos Passos
Parabéns por concluir o curso! Aqui ficam os tópicos avançados para continuar a aprender:
AD DS Replicação
Implementar um segundo Domain Controller para redundância e balanceamento de carga.
File Server + DFS
Configurar partilhas de ficheiros, quotas, permissões NTFS e replicação DFS entre locais.
Print Server
Centralizar impressoras e distribuir drivers automaticamente via GPO.
AD CS — Certificados
Autoridade de Certificação interna para HTTPS, VPN e autenticação por certificado.
Azure AD Connect
Sincronizar o AD local com o Microsoft 365 / Azure Active Directory.
Windows Defender
Configurar antivírus, EDR e proteção centralizada com Defender for Endpoint.