Creación de un script automatizado de mantenimiento preventivo con PowerShell

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:

  1. Privilegios elevados: El script debe ejecutarse obligatoriamente con permisos de Administrador (#Requires -RunAsAdministrator).
  2. Registro de actividades (Logging): Es vital registrar los resultados de cada ejecución mediante Start-Transcript para auditar errores o verificar qué equipos completaron el mantenimiento.
  3. 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):
    1. Guardar el archivo .ps1 en una ruta compartida de red accesible por las computadoras del dominio (SYSVOL).
    2. Configurar una Política de Grupo (GPO) vinculada a la Unidad Organizativa (OU) de los equipos.
    3. 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.
  • Mediante Soluciones MDM (Microsoft Intune / Endpoint Manager):
    1. Subir el script a la consola de administración en la sección de Scripts de PowerShell.
    2. Asignarlo para que se ejecute de manera silenciosa en los dispositivos corporativos según la frecuencia deseada (semanal o mensual).
Scroll al inicio