<# .SYNOPSIS Responde si la auditoría unificada de Microsoft 365 está activa en tu tenant. .DESCRIPTION Lee UnifiedAuditLogIngestionEnabled con Get-AdminAuditLogConfig en Exchange Online PowerShell. Si está inactiva, no se registra actividad nueva y las búsquedas de auditoría no devuelven nada. Solo lectura: no cambia nada en el tenant. .PARAMETER RutaCsv Ruta del CSV de salida. Si se omite, solo se muestra en pantalla. .EXAMPLE .\get-estado-auditoria.ps1 -RutaCsv .\estado-auditoria.csv .NOTES Permisos: ninguno de Graph; usa ExchangeOnlineManagement. Rol mínimo: Audit Logs o View-Only Audit Logs en Exchange Online (incluidos en Compliance Management y Organization Management). Licencia: Microsoft Purview Audit (Standard), incluido en suscripciones de Microsoft 365 y Office 365 que admiten el registro de auditoría unificado. Licencia del código: MIT. Se entrega TAL CUAL, sin garantía. Pruébalo primero en un tenant de pruebas. #> [CmdletBinding()] param( [string]$RutaCsv ) $ErrorActionPreference = 'Stop' if (-not (Get-Command Connect-ExchangeOnline -ErrorAction SilentlyContinue)) { throw 'Falta el módulo. Instálalo con: Install-Module ExchangeOnlineManagement -Scope CurrentUser' } # Con una sesión previa de Connect-IPPSSession el valor puede salir siempre False, aunque la auditoría esté activa. Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue Connect-ExchangeOnline -ShowBanner:$false try { $config = Get-AdminAuditLogConfig } finally { Disconnect-ExchangeOnline -Confirm:$false } $activa = $config.UnifiedAuditLogIngestionEnabled -eq $true $fila = [pscustomobject]@{ Control = 'Auditoría unificada (UnifiedAuditLogIngestionEnabled)' Valor = $config.UnifiedAuditLogIngestionEnabled Estado = if ($activa) { 'Activa' } else { 'Inactiva' } Accion = if ($activa) { 'Sin acción. Guarda este resultado como evidencia de la revisión.' } else { 'Actívala en el portal de Microsoft Purview, en Auditoría, o con Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true. Puede tardar hasta 60 minutos.' } } Write-Host "Auditoría unificada: $($fila.Estado)" if ($RutaCsv) { # UTF-8 con BOM para que Excel en español muestre bien los acentos. $fila | Export-Csv -Path $RutaCsv -NoTypeInformation -Encoding utf8BOM Write-Host "CSV guardado en $RutaCsv" } else { $fila | Format-List }