/
/

Cómo programar la limpieza automática de archivos temporales y perfiles de usuario antiguos en equipos remotos

por Team Ninja
How to Script Automatic Clean-Up of Temporary Files and Old User Profiles on Remote Machines blog banner image

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

Los archivos temporales y los perfiles de usuario obsoletos son datos prescindibles que se acumulan en un dispositivo sin que te des cuenta. Aunque parezcan inofensivos, estos archivos y perfiles residuales pueden ocupar mucho espacio en disco.

Si los dejas sin gestionar durante mucho tiempo, pueden generar riesgos de seguridad en entornos multiusuario o con estaciones de trabajo compartidas.

Una forma de mantener todos tus endpoints ligeros y con un rendimiento óptimo es automatizar la limpieza.

Hoy te mostraremos cómo crear scripts de automatización para limpiar archivos temporales y perfiles de usuario antiguos en equipos remotos.

¿Prefieres verlo en vídeo? Mira «Cómo programar la limpieza automática de archivos temporales y perfiles de usuario antiguos en equipos remotos».

Automatizar la limpieza de archivos temporales y perfiles de usuario con PowerShell

Limpiar los archivos temporales y eliminar los perfiles de usuario antiguos es una tarea rutinaria para los MSP. Ayuda a que los sistemas funcionen sin problemas, libera espacio valioso en disco y reduce los riesgos de seguridad.

Sin embargo, hacerlo manualmente en cientos de endpoints lleva mucho tiempo, por lo que la mayoría de los administradores de sistemas utilizan scripts de PowerShell para automatizar todo el proceso.

Antes de continuar, asegúrate de cumplir estos requisitos:

📌 Requisitos previos:

  • Windows 10/11 o Server 2016+
  • PowerShell versión 5.1 o posterior
  • Derechos de administrador local
  • NinjaOne u otras herramientas RMM para el despliegue y la recuperación de registros (opcional)
  • Acceso a GPO para aplicar políticas de limpieza (opcional)

Estas son las herramientas principales que necesitarás para esta guía.

📌 Estrategias de despliegue recomendadas:

Haz clic para elegir un método 💻
Ideal para usuarios individuales
💻💻💻
Ideal para empresas
Método 1: crear un script de limpieza de archivos temporales con PowerShell ✓ ✓
Método 2: crear un script para eliminar perfiles de usuario antiguos con PowerShell ✓
Método 3: usar directivas de grupo para estandarizar o complementar la limpieza ✓

Método 1: crear un script de limpieza de archivos temporales con PowerShell

📌 Caso de uso: crea un script que elimine los archivos temporales y los directorios de usuario de un endpoint para reducir el desorden y liberar espacio de almacenamiento.

Limpiar los directorios temporales de Windows y de usuario:

# System temp
$systemTemp = «$env:windir\Temp»
Get-ChildItem -Path $systemTemp -Recurse -Force -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue# User temp
$users = Get-ChildItem 'C:\Users' -Directory
foreach ($user in $users) {
$tempPath = «$($user.FullName)\AppData\Local\Temp»
if (Test-Path $tempPath) {
Get-ChildItem -Path $tempPath -Recurse -Force -ErrorAction SilentlyContinue |
Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
}
}

Asegúrate de excluir las cuentas del sistema y las sesiones de usuario activas para evitar la pérdida accidental de datos.

Método 2: crear un script para eliminar perfiles de usuario antiguos con PowerShell

📌 Caso de uso: despliega un script que identifique y elimine los perfiles de usuario inactivos según su última fecha de inicio de sesión.

A. Eliminar los perfiles no utilizados en los últimos 30 días

$cutoff = (Get-Date).AddDays(-30)
Get-CimInstance -ClassName Win32_UserProfile | Where-Object {
-not $_.Special -and $_.LastUseTime -lt $cutoff
} | ForEach-Object {
Remove-CimInstance -InputObject $_
}

B. Comprobar sin eliminar

Get-CimInstance -ClassName Win32_UserProfile | Where-Object {
-not $_.Special -and $_.LastUseTime -lt $cutoff
} | Select-Object LocalPath, LastUseTime

Método 3: usar directivas de grupo para estandarizar o complementar la limpieza

📌 Caso de uso: aplica configuraciones de directiva de grupo para forzar la limpieza de perfiles al reiniciar el sistema y estandarizar el proceso en todos los dispositivos.

  1. Abre el Editor de directivas de grupo.
  2. Ve a: Configuración del equipo > Plantillas administrativas > Sistema > Perfiles de usuario.
  3. Activa la opción «Eliminar perfiles de usuario con más de un número determinado de días de antigüedad al reiniciar el sistema».
  4. Establece el valor en 30 días.

💡Consejo: puedes combinarlo con un script de automatización de PowerShell para garantizar que se aplique a nivel de sistema.

Pasos adicionales para automatizar la limpieza de archivos temporales y perfiles de usuario

Estos son algunos pasos adicionales que puedes dar para eliminar más fácilmente los archivos temporales y los perfiles de usuario antiguos.

Método 1: programar la limpieza con el Programador de tareas

📌 Caso de uso: crea una tarea programada para ejecutar los scripts de limpieza automáticamente en horas de poca actividad y mantener el sistema en buen estado.

A. Crear una tarea programada desde CMD

schtasks /create /tn «AutoCleanup» /tr "powershell.exe -File C:\Scripts\Cleanup.ps1" /sc weekly /st 02:00 /ru SYSTEM

B. Validar la programación

schtasks /query /tn «AutoCleanup»

Aplica un calendario de limpieza coherente en todos los clientes para facilitar los informes y el cumplimiento.

Método 2: registrar los resultados de la limpieza en el Registro para que el RMM tenga visibilidad

📌 Caso de uso: registra la actividad de limpieza en el Registro o en archivos locales para que tu herramienta RMM pueda monitorizarla, informar sobre ella y auditarla.

A. Crear la clave de auditoría y almacenar los metadatos

New-Item -Path "HKLM:\SOFTWARE\Org\CleanupAudit" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\CleanupAudit" -Name "LastCleanupDate" -Value (Get-Date).ToString(«u»)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\CleanupAudit" -Name "ProfilesRemoved" -Value 3
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\CleanupAudit" -Name "TempFilesDeletedMB" -Value 512

B. Consultar desde CMD

reg query HKLM\SOFTWARE\Org\CleanupAudit

De este modo, tu herramienta RMM dispone de un dato concreto para la monitorización y las alertas.

⚠️ Aspectos a tener en cuenta

Ten presentes estos posibles problemas al seguir nuestra guía:

Riesgos Posibles consecuencias Solución
Eliminar archivos temporales de cuentas del sistema Fallos en servicios o inestabilidad del sistema Usa una lista blanca para excluir las cuentas del sistema conocidas.
Ejecutar tareas programadas sin los permisos adecuados El script fallará sin avisar o devolverá errores Ejecuta las tareas como SYSTEM o con permisos completos de administrador.
Archivos que no se eliminan por problemas de permisos Limpieza parcial Busca archivos bloqueados o permisos heredados de otro usuario.
La tarea programada no se ejecuta por errores de configuración La limpieza no se realizará Verifica la ruta del script, la sintaxis y la configuración del sistema.
La GPO no se aplica al comportamiento previsto Limpieza inconsistente entre dispositivos Usa gpresult /h report.html para comprobar la herencia de directivas de grupo en todos los endpoints.
Aplicar políticas de limpieza sin probarlas Pérdida accidental de datos y errores del sistema Prueba los scripts y las directivas de grupo en un entorno de pruebas antes de desplegarlos.

Guía de inicio rápido

NinjaOne cuenta con varios scripts que pueden ayudarte a limpiar archivos temporales y gestionar perfiles de usuario. Estas son algunas opciones relevantes:

1. Informe de perfiles de usuario huérfanos: hay un script que «busca carpetas de perfiles de usuario que no tienen una cuenta de usuario asociada». Resulta útil para identificar perfiles de usuario antiguos o innecesarios.

2. Gestión de archivos temporales: aunque no existe un script específico de «limpieza de archivos temporales», NinjaOne ofrece capacidades de scripting flexibles que te permiten crear un script personalizado para:

  • Buscar y eliminar archivos temporales
  • Limpiar directorios concretos
  • Eliminar perfiles de usuario antiguos

3. Flexibilidad de automatización: la plataforma te permite crear scripts personalizados capaces de:

  • Buscar archivos anteriores a una fecha determinada
  • Eliminar archivos de los directorios temporales
  • Gestionar perfiles de usuario en equipos remotos

Buenas prácticas para automatizar la limpieza de perfiles de usuario y archivos temporales

Para que tus scripts funcionen bien en distintos entornos, sigue estos consejos prácticos:

Comprueba si hay sesiones de usuario activas antes de eliminar perfiles

Si no compruebas si hay sesiones de usuario activas, puedes eliminar una cuenta que aún está en uso e interrumpir la jornada de trabajo de alguien.

Para evitarlo, usa quser en CMD o Get-Process -IncludeUserName en PowerShell y comprueba si el usuario sigue con la sesión iniciada.

Excluye de la limpieza las cuentas de servicio y los inicios de sesión compartidos

Eliminar cuentas que se usan para servicios en segundo plano o que comparten varios usuarios puede interrumpir tareas automatizadas.

La solución es excluir las cuentas de servicio de la limpieza mediante un array de lista blanca.

Protege los perfiles de usuario recientes con umbrales de antigüedad conservadores

Que un perfil no se haya usado durante un tiempo no significa necesariamente que ya no se necesite. Algunos perfiles de usuario se crean para un uso puntual, como los del personal remoto o de los directivos.

Si estableces un umbral amplio (por ejemplo, 60 o 90 días) al identificar los perfiles obsoletos, evitarás eliminar por error cuentas válidas.

Rota los registros con regularidad para garantizar la trazabilidad y gestionar el almacenamiento

Crea resúmenes de tus limpiezas en archivos locales o en recursos compartidos de red para facilitar la resolución de problemas. Esos registros deben incluir cuántos archivos temporales y perfiles de usuario ha eliminado tu script y cuándo.

Además, conviene rotar los resúmenes de limpieza para ahorrar espacio en disco. Puedes hacerlo archivando o eliminando los registros más antiguos.

Así simplifica NinjaOne la limpieza remota de archivos temporales y perfiles

NinjaOne facilita mantener los endpoints remotos limpios y en buen estado gracias a que te permite:

  • Desplegar y programar scripts de limpieza en todos los endpoints.
  • Hacer seguimiento de las claves del Registro con la última limpieza y el número de perfiles eliminados.
  • Recibir alertas cuando se incumple una ventana de limpieza o falla un script.
  • Etiquetar dispositivos para su remediación según el uso del disco.
  • Generar informes de varios clientes sobre la cobertura y el éxito de las limpiezas.

Con NinjaOne, los MSP pueden automatizar el mantenimiento de los endpoints a gran escala y monitorizar los resultados en tiempo real de varias carteras de clientes desde un único panel.

Mejora el mantenimiento de tus endpoints con la limpieza automática de perfiles y archivos temporales

Automatizar la eliminación y la limpieza de archivos temporales y perfiles de usuario antiguos es una decisión inteligente para cualquier MSP. Elimina el trabajo manual de mantener cientos de endpoints y garantiza un rendimiento del sistema constante en los entornos de varios clientes.

Si implementas limpiezas programadas, podrás prevenir de forma proactiva problemas como la lentitud del sistema y la falta de espacio en disco.

Temas relacionados:

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?

Términos y condiciones de NinjaOne

Al hacer clic en el botón «Acepto» que aparece a continuación, estás aceptando los siguientes términos legales, así como nuestras Condiciones de uso:

  • Derechos de propiedad: NinjaOne posee y seguirá poseyendo todos los derechos, títulos e intereses sobre el script (incluidos los derechos de autor). NinjaOne concede al usuario una licencia limitada para utilizar el script de acuerdo con estos términos legales.
  • Limitación de uso: solo podrás utilizar el script para tus legítimos fines personales o comerciales internos, y no podrás compartirlo con terceros.
  • Prohibición de republicación: bajo ninguna circunstancia está permitido volver a publicar el script en ninguna biblioteca de scripts que pertenezca o esté bajo el control de cualquier otro proveedor de software.
  • Exclusión de garantía: el script se proporciona «tal cual» y «según disponibilidad», sin garantía de ningún tipo. NinjaOne no promete ni garantiza que el script esté libre de defectos o que satisfaga las necesidades o expectativas específicas del usuario.
  • Asunción de riesgos: el uso que el usuario haga del script corre por su cuenta y riesgo. El usuario reconoce que existen ciertos riesgos inherentes al uso del script, y entiende y asume cada uno de esos riesgos.
  • Renuncia y exención: el usuario no hará responsable a NinjaOne de cualquier consecuencia adversa o no deseada que resulte del uso del script y renuncia a cualquier derecho o recurso legal o equitativo que pueda tener contra NinjaOne en relación con su uso del script.
  • CLUF: si el usuario es cliente de NinjaOne, su uso del script está sujeto al Contrato de Licencia para el Usuario Final (CLUF).