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' -Directoryforeach ($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.
- Abre el Editor de directivas de grupo.
- Ve a: Configuración del equipo > Plantillas administrativas > Sistema > Perfiles de usuario.
- 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».
- 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" -ForceSet-ItemProperty -Path "HKLM:\SOFTWARE\Org\CleanupAudit" -Name "LastCleanupDate" -Value (Get-Date).ToString(«u»)Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\CleanupAudit" -Name "ProfilesRemoved" -Value 3Set-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:
- Guía completa: cómo eliminar los archivos temporales en Windows 10
- Cómo usar el Liberador de espacio en disco de Windows para optimizar tu sistema
- Cómo usar el Liberador de espacio en disco de Windows para optimizar tu sistema (vídeo)
- Cómo mostrar los archivos ocultos en Windows 11: guía completa
- Cómo activar o desactivar el Sensor de almacenamiento en Windows 11