# MANUAL TÉCNICO - AUTOMAÇÃO E RELATÓRIOS COM POWERSHELL

**Código:** ITGENG 0030/26 | **Classificação:** CONFIDENCIAL
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Centralizar scripts de manutenção, relatórios de auditoria e operações em massa para administradores de sistemas. **Elimine o trabalho manual repetitivo.**

## 3. RELATÓRIOS DE AUDITORIA

### 1. Usuários Inativos (Stale Users)
Encontra usuários que não logam há mais de 90 dias.
```powershell
$Dias = 90
Search-ADAccount -AccountInactive -TimeSpan ([timespan]::$Dias.00:00:00) -UsersOnly | 
Select-Object Name, SamAccountName, LastLogonDate, Enabled | 
Export-Csv "C:\Relatorios\Inativos.csv" -NoTypeInformation
```

### 2. Senhas Prestes a Expirar
Avise os usuários antes do bloqueio.
```powershell
Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties msDS-UserPasswordExpiryTimeComputed | 
Select-Object Name, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
```

### 3. Membros do Grupo Domain Admins (Segurança)
Verifique quem tem a chave do reino.
```powershell
Get-ADGroupMember "Domain Admins" | Select-Object Name, SamAccountName, ObjectClass
```

---

## 4. OPERAÇÕES EM MASSA (BULK)

### Criação de Usuários via CSV
Arquivo `novos.csv` deve ter colunas: `Nome,Login,Cargo`.

```powershell
Import-Csv "C:\Temp\novos.csv" | ForEach-Object {
    New-ADUser -Name $_.Nome `
               -SamAccountName $_.Login `
               -UserPrincipalName "$($_.Login)@empresa.local" `
               -Title $_.Cargo `
               -Path "OU=Usuarios,DC=empresa,DC=local" `
               -AccountPassword (ConvertTo-SecureString "Mudar@123" -AsPlainText -Force) `
               -ChangePasswordAtLogon $true `
               -Enabled $true
}
```

---

## 5. MANUTENÇÃO DE SERVIDOR

### Limpeza de Disco (Logs Antigos)
Script para rodar no Task Scheduler semanalmente.
```powershell
$Path = "C:\inetpub\logs\LogFiles"
$Daysback = "-30"
Get-ChildItem $Path -Recurse -Force | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays($Daysback) } | Remove-Item -Force
```

### Verificar Serviços Parados (Automático)
```powershell
$ServicosCriticos = "DNS","Dhcp","LanmanServer"
foreach ($S in $ServicosCriticos) {
    if ((Get-Service $S).Status -ne "Running") {
        # Aqui voce poderia enviar um e-mail ou tentar iniciar
        Start-Service $S
        Write-Warning "Serviço $S foi reiniciado."
    }
}
```

## 6. VALIDAÇÃO FINAL
- [ ] Os scripts rodam sem erros vermelhos?
- [ ] O CSV de saída é gerado corretamente?
- [ ] A execução em massa criou os usuários na OU certa?
