Automatizar tareas repetitivas de mantenimiento preventivo en una flota de equipos corporativos reduce drásticamente las incidencias de soporte técnico, mejora el rendimiento general del sistema operativo y asegura el cumplimiento de las políticas de seguridad sin interrumpir las labores del usuario.
A continuación, se detalla la estructura y el diseño técnico para construir un script .ps1 modular y seguro que combine los comandos esenciales de diagnóstico, limpieza y red.
Consideraciones previas para entornos corporativos
Antes de desplegar un script de mantenimiento en producción, es necesario asegurar ciertos requisitos técnicos:
- Privilegios elevados: El script debe ejecutarse obligatoriamente con permisos de Administrador (
#Requires -RunAsAdministrator). - Registro de actividades (Logging): Es vital registrar los resultados de cada ejecución mediante
Start-Transcriptpara auditar errores o verificar qué equipos completaron el mantenimiento. - Manejo de errores: Utilizar bloques de control o parámetros de silencio (
-ErrorAction SilentlyContinue) para evitar que el script se detenga abruptamente si un comando falla de manera temporal.
Estructura del Script de Mantenimiento (MantenimientoPreventivo.ps1)
El siguiente código integra las tareas de red, limpieza de archivos temporales, verificación de almacenamiento y salud del sistema operativo en una rutina automatizada:
PowerShell
<#
.SYNOPSIS
Script automatizado de mantenimiento preventivo para estaciones de trabajo Windows.
.DESCRIPTION
Ejecuta tareas de limpieza de temporales, renovación de red, purga de DNS,
verificación de disco S.M.A.R.T. y actualización de políticas de grupo.
.AUTHOR
Administración de Sistemas / Troyatec
#>
# Requerir privilegios de Administrador
#Requires -RunAsAdministrator
$LogPath = "C:\Logs\Mantenimiento_Preventivo_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"
Start-Transcript -Path $LogPath
Write-Host "=== INICIO DE RUTINA DE MANTENIMIENTO PREVENTIVO ===" -ForegroundColor Cyan
# 1. Limpieza de Archivos Temporales
Write-Host "[*] Limpiando archivos temporales del sistema..." -ForegroundColor Yellow
try {
Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Host "[+] Archivos temporales eliminados correctamente."
} catch {
Write-Warning "[!] Algunos archivos temporales están en uso y no pudieron borrarse."
}
# 2. Red y Resolución DNS
Write-Host "[*] Vaciando la caché del servidor DNS..." -ForegroundColor Yellow
Clear-DnsClientCache
Write-Host "[*] Renovando dirección IP..." -ForegroundColor Yellow
ipconfig /release | Out-Null
ipconfig /renew | Out-Null
Write-Host "[*] Forzando actualización de Directivas de Grupo..." -ForegroundColor Yellow
gpupdate /force | Out-Null
# 3. Verificación de Salud del Disco Duro Principal (S.M.A.R.T.)
Write-Host "[*] Verificando el estado de salud del almacenamiento..." -ForegroundColor Yellow
$DiskHealth = Get-PhysicalDisk | Select-Object FriendlyName, OperationalStatus, HealthStatus
$DiskHealth | Format-Table -AutoSize
# 4. Estado de Servicios Críticos de Windows
Write-Host "[*] Verificando servicios esenciales..." -ForegroundColor Yellow
$Services = Get-Service -Name MpsSvc, wuauserv, BITS | Select-Object Name, Status
$Services | Format-Table -AutoSize
Write-Host "=== MANTENIMIENTO PREVENTIVO FINALIZADO CON ÉXITO ===" -ForegroundColor Green
Stop-Transcript
Métodos de despliegue masivo en la empresa
Para aplicar este script de forma automatizada en todos los equipos de la organización sin intervención manual de los usuarios, existen dos vías principales:
- Mediante GPO (Active Directory – Script de Inicio/Apagado):
- Guardar el archivo
.ps1en una ruta compartida de red accesible por las computadoras del dominio (SYSVOL). - Configurar una Política de Grupo (GPO) vinculada a la Unidad Organizativa (OU) de los equipos.
- Navegar a:
Configuración del equipo>Directivas>Configuración de Windows>Scripts (Inicio/Apagado)>Inicio(Startup) y añadir la ruta del script de PowerShell.
- Guardar el archivo
- Mediante Soluciones MDM (Microsoft Intune / Endpoint Manager):
- Subir el script a la consola de administración en la sección de Scripts de PowerShell.
- Asignarlo para que se ejecute de manera silenciosa en los dispositivos corporativos según la frecuencia deseada (semanal o mensual).
