# Guía de Administración - Script de Diagnóstico Avanzado del Sistema

## 📋 Información General

- **Herramienta**: Script de Diagnóstico Avanzado del Sistema
- **Archivo**: `DiagnosticoSistema_Avanzado.ps1`
- **Versión**: 3.0
- **Propósito**: Análisis completo de sistemas Windows para administradores
- **Compatibilidad**: Windows 10/11, Windows Server 2016+

## 🎯 Casos de Uso Principales

### 1. Diagnóstico de Problemas
- **Problemas de rendimiento**: CPU, memoria, disco
- **Problemas de seguridad**: Antivirus, firewall, UAC
- **Problemas de servicios**: Servicios críticos no ejecutándose
- **Problemas de red**: Interfaces, conectividad

### 2. Auditoría de Sistemas
- **Inventario de hardware**: Procesador, memoria, discos
- **Inventario de software**: Programas instalados
- **Configuración de seguridad**: Estado de componentes de seguridad
- **Configuración de red**: Interfaces y direcciones IP

### 3. Monitoreo Proactivo
- **Alertas automáticas**: Detección de problemas antes de que ocurran
- **Análisis comparativo**: Comparación con ejecuciones anteriores
- **Tendencias**: Seguimiento de cambios en el sistema

### 4. Reportes para Gestión
- **Reportes ejecutivos**: Resúmenes para directivos
- **Reportes técnicos**: Detalles para equipos técnicos
- **Múltiples formatos**: TXT, HTML, JSON

## 🚀 Instalación y Configuración

### Requisitos del Sistema
```
- Windows 10/11 o Windows Server 2016+
- PowerShell 5.1 o superior
- Permisos de administrador (recomendado)
- Mínimo 50MB de espacio libre
```

### Instalación
1. **Descargar el script** a una ubicación segura
2. **Verificar integridad** del archivo
3. **Configurar permisos** de ejecución si es necesario

### Configuración de Políticas de Ejecución
```powershell
# Verificar política actual
Get-ExecutionPolicy

# Configurar para ejecutar scripts locales (si es necesario)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```

## 📖 Guía de Uso

### Ejecución Básica
```powershell
# Navegar al directorio del script
cd "C:\ruta\al\script"

# Ejecutar el script
.\DiagnosticoSistema_Avanzado.ps1
```

### Ejecución con Parámetros Específicos
```powershell
# Ejecutar como administrador (recomendado)
Start-Process PowerShell -Verb RunAs -ArgumentList "-File .\DiagnosticoSistema_Avanzado.ps1"

# Ejecutar con logging detallado
$VerbosePreference = 'Continue'
.\DiagnosticoSistema_Avanzado.ps1
```

### Flujo de Ejecución
1. **Banner de inicio**: Información de versión y créditos
2. **Selección de ubicación**: Dónde guardar los reportes
3. **Validación de integridad**: Verificación de acceso a componentes
4. **Recolección de datos**: Hardware, software, rendimiento, seguridad
5. **Análisis**: Procesamiento de datos y generación de alertas
6. **Generación de reportes**: TXT, HTML, JSON
7. **Resumen final**: Información clave en pantalla

## 📊 Interpretación de Resultados

### Información del Sistema
```
Fabricante: Dell Inc.
Modelo: Latitude 5520
Sistema operativo: Microsoft Windows 10 Pro
Tipo de sistema: Workstation
Usuario actual: administrador
Ejecutando como administrador: Sí
```

### Métricas de Rendimiento
```
CPU Usage: 25.5%
Memory Usage: 72.6%
Disk I/O: 15.2 ops/sec
```

**Interpretación**:
- **CPU < 50%**: Normal
- **CPU 50-80%**: Moderado
- **CPU > 80%**: Alto (investigar)
- **Memoria < 70%**: Normal
- **Memoria 70-85%**: Moderado
- **Memoria > 85%**: Alto (investigar)

### Análisis de Seguridad
```
Windows Defender: Enabled
Firewall: Enabled (3 profiles)
UAC: Enabled
BitLocker: Enabled (2 volumes)
Última Actualización: 2024-01-15
```

**Estado Deseado**:
- ✅ Todos los componentes habilitados
- ✅ Múltiples perfiles de firewall activos
- ✅ UAC habilitado
- ✅ BitLocker activo en volúmenes críticos
- ✅ Actualizaciones recientes (< 30 días)

### Alertas del Sistema
```
CRÍTICO: Disco C: al 89.2% de uso
ADVERTENCIA: Disco G: al 85.7% de uso
CRÍTICO: Servicio Spooler no está ejecutándose
```

**Clasificación de Alertas**:
- 🔴 **CRÍTICO**: Requiere atención inmediata
- 🟡 **ADVERTENCIA**: Monitorear y planificar acción
- 🟢 **INFO**: Información general

## 🔧 Troubleshooting

### Problemas Comunes y Soluciones

#### 1. Error: "Acceso denegado"
**Síntomas**: Script falla al acceder a información del sistema
**Causa**: Permisos insuficientes
**Solución**:
```powershell
# Ejecutar como administrador
Start-Process PowerShell -Verb RunAs -ArgumentList "-File .\DiagnosticoSistema_Avanzado.ps1"
```

#### 2. Error: "No se puede indizar en una matriz nula"
**Síntomas**: Error en análisis de rendimiento
**Causa**: Contadores de rendimiento no disponibles
**Solución**: El script maneja esto automáticamente, usar método alternativo

#### 3. Error: "Módulo no encontrado"
**Síntomas**: Error al cargar módulos específicos
**Causa**: Módulo de PowerShell no instalado
**Solución**: El script continúa sin el módulo, funcionalidad limitada

#### 4. Reportes no generados
**Síntomas**: Script ejecuta pero no encuentra archivos de salida
**Causa**: Problemas de permisos de escritura
**Solución**:
```powershell
# Verificar permisos de escritura
Test-Path "C:\Users\$env:USERNAME\Desktop" -PathType Container
# Usar ubicación alternativa si es necesario
```

### Logs de Diagnóstico
```powershell
# Buscar errores específicos
Get-Content $logFile | Where-Object { $_ -like "*ERROR*" }

# Buscar advertencias
Get-Content $logFile | Where-Object { $_ -like "*WARN*" }

# Ver logs de un componente específico
Get-Content $logFile | Where-Object { $_ -like "*Security*" }
```

## 📈 Monitoreo y Mantenimiento

### Programación de Ejecuciones
```powershell
# Crear tarea programada para ejecución diaria
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\DiagnosticoSistema_Avanzado.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 2:00AM
Register-ScheduledTask -TaskName "DiagnosticoSistema" -Action $action -Trigger $trigger -User "SYSTEM"
```

### Análisis de Tendencias
```powershell
# Comparar reportes de diferentes fechas
$reports = Get-ChildItem "C:\Reports\*.json" | Sort-Object LastWriteTime
$latest = $reports[-1] | Get-Content | ConvertFrom-Json
$previous = $reports[-2] | Get-Content | ConvertFrom-Json

# Analizar cambios en rendimiento
$cpuDiff = $latest.Performance.CPU_Usage - $previous.Performance.CPU_Usage
Write-Host "Cambio en CPU: $cpuDiff%"
```

### Limpieza de Reportes Antiguos
```powershell
# Eliminar reportes más antiguos de 30 días
$cutoffDate = (Get-Date).AddDays(-30)
Get-ChildItem "C:\Reports\*.txt" | Where-Object { $_.LastWriteTime -lt $cutoffDate } | Remove-Item
Get-ChildItem "C:\Reports\*.html" | Where-Object { $_.LastWriteTime -lt $cutoffDate } | Remove-Item
Get-ChildItem "C:\Reports\*.json" | Where-Object { $_.LastWriteTime -lt $cutoffDate } | Remove-Item
```

## 🔒 Consideraciones de Seguridad

### Datos Sensibles en Reportes
- **Números de serie**: Información de hardware
- **Direcciones IP**: Configuración de red
- **Nombres de usuario**: Información de sesión
- **Estado de servicios**: Configuración del sistema

### Recomendaciones de Seguridad
1. **Almacenamiento seguro**: Guardar reportes en ubicaciones protegidas
2. **Acceso restringido**: Limitar acceso a reportes a personal autorizado
3. **Eliminación segura**: Borrar reportes antiguos de forma segura
4. **Auditoría**: Mantener registro de ejecuciones del script

### Políticas de Retención
```
- Reportes diarios: 30 días
- Reportes semanales: 6 meses
- Reportes mensuales: 2 años
- Reportes de auditoría: 5 años
```

## 📋 Procedimientos Operativos

### Procedimiento de Diagnóstico de Emergencia
1. **Ejecutar script** como administrador
2. **Revisar alertas críticas** inmediatamente
3. **Analizar métricas de rendimiento** para identificar cuellos de botella
4. **Verificar servicios críticos** y reiniciar si es necesario
5. **Generar reporte** para documentación

### Procedimiento de Auditoría Mensual
1. **Ejecutar script** en todos los sistemas críticos
2. **Revisar tendencias** de rendimiento y seguridad
3. **Identificar patrones** de problemas recurrentes
4. **Actualizar documentación** de configuración
5. **Planificar mejoras** basadas en hallazgos

### Procedimiento de Onboarding de Nuevos Sistemas
1. **Ejecutar script** en sistema nuevo
2. **Documentar configuración** inicial
3. **Establecer línea base** de rendimiento
4. **Configurar monitoreo** automático
5. **Integrar** en procedimientos de mantenimiento

## 📊 Métricas de Rendimiento del Script

### Tiempos de Ejecución Esperados
- **Estación de trabajo básica**: 15-30 segundos
- **Estación de trabajo con software**: 30-45 segundos
- **Servidor básico**: 30-60 segundos
- **Servidor con roles**: 45-90 segundos
- **Controlador de dominio**: 60-120 segundos

### Uso de Recursos
- **CPU**: Pico del 5-10% durante análisis
- **Memoria**: ~50MB durante ejecución
- **Disco**: ~1-5MB de archivos de salida
- **Red**: Mínimo (solo para análisis de red)

## 🎯 Mejores Prácticas

### Para Administradores
1. **Ejecutar regularmente**: Establecer horarios de ejecución
2. **Documentar cambios**: Mantener registro de modificaciones
3. **Revisar alertas**: Responder a alertas críticas inmediatamente
4. **Analizar tendencias**: Usar datos históricos para planificación
5. **Compartir conocimientos**: Entrenar equipo en interpretación de resultados

### Para Equipos de Soporte
1. **Usar como herramienta de diagnóstico**: Primera línea de investigación
2. **Documentar casos**: Mantener base de conocimientos
3. **Estandarizar procedimientos**: Usar script en todos los casos similares
4. **Comunicar hallazgos**: Compartir resultados con administradores
5. **Sugerir mejoras**: Proponer optimizaciones basadas en datos

### Para Gestión
1. **Revisar reportes ejecutivos**: Usar HTML para presentaciones
2. **Analizar tendencias**: Identificar patrones de problemas
3. **Planificar recursos**: Basar decisiones en datos del script
4. **Establecer KPIs**: Definir métricas de rendimiento del sistema
5. **Aprobar mejoras**: Autorizar cambios basados en análisis

## 📞 Soporte y Escalación

### Nivel 1 - Autoservicio
- Consultar esta documentación
- Revisar logs del script
- Verificar configuración básica

### Nivel 2 - Soporte Técnico
- Análisis de logs detallados
- Verificación de permisos
- Configuración de políticas

### Nivel 3 - Administradores de Sistema
- Modificación del script
- Integración con sistemas
- Optimización de rendimiento

### Nivel 4 - Desarrollo
- Nuevas funcionalidades
- Corrección de bugs
- Mejoras de arquitectura

## 📚 Recursos Adicionales

### Documentación Relacionada
- [Guía de PowerShell para Administradores](https://docs.microsoft.com/en-us/powershell/)
- [Mejores Prácticas de Seguridad de Windows](https://docs.microsoft.com/en-us/windows/security/)
- [Monitoreo de Rendimiento de Windows](https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/)

### Herramientas Complementarias
- **Event Viewer**: Para análisis de logs del sistema
- **Performance Monitor**: Para análisis detallado de rendimiento
- **System Configuration**: Para análisis de servicios y arranque
- **Network Configuration**: Para análisis de red

---

**Nota**: Esta guía se actualiza con cada versión del script. Para la versión más reciente, consultar la documentación técnica correspondiente. 