Articulo Original.

Unos meses atrás, escribí un post sobre cómo reducir el tamaño del directorio WinSxS y liberar espacio en disco en Windows Server 2012.

A manera de recapitulación, el directorio WinSxS es un gran consumidor de espacio en disco tanto en  servidores como clientes Windows. Junto a las actividades de actualización y con el pasar del tiempo, el directorio WinSxS constantemente aumenta de tamaño.

¿Por qué es esto?

Una de las causas de esto es las actualizaciones de Windows. Para permitir la posibilidad de desinstalar una actualización, todas las versiones previamente instaladas de las actualizaciones de Windows son mantenidas en directorio WinSxS incluso cuando estas son reemplazadas por una versión nueva de la actualización. Esto explica por qué las actualizaciones de Windows consumen mucho espacio y que este aumente continuamente al ser instaladas más y más actualizaciones.

¿Cómo podemos limpiar el directorio WinSxS? Con cada Service Pack lanzado, también damos la opción de realizar una limpieza que elimina todas las versiones anteriores de los archivos actualizados por el Service Pack. Sin embargo, Service Pack 1 fue liberado hace más de 2 años, y no ha habido otro desde entonces. ¿Entonces, piensa en todos esos archivos actualizados por las actualizaciones de seguridad y las revisiones? Hasta hoy, no hemos tenido la capacidad de limpieza de estos archivos.

Pero todo cambia hoy.

 

Nueva e importante actualización que añade Windows Update Cleanup

Esta mañana, fue lanzada una nueva actualización recomendada. Se puede encontrar aquí.

Esta actualización trae de vuelta algunas de las mismas funcionalidades ya incorporadas en Windows 8 y versiones posteriores. Nos da la posibilidad de purgar las versiones anteriores de los archivos reemplazados por las actualizaciones de Windows.

Nota: Esto se clasifica como una actualización "importante". ¿Qué significa esto para usted? Esto significa que no es una actualización de seguridad crítica, que no debería ser automáticamente instalado o enviada a los clientes esto dependiendo de la configuración de Windows Update, configuración de WSUS u otros programas de administración/gestión de software  producidos por terceros.

 

Proceso de limpieza de Windows Update

Así que ¿Cómo es este proceso?

Después de instalar la actualización, haga clic en el botón de Start, Search y escriba Disk CleanUp, luego de un clic derecho sobre este y seleccione la opción de ejecutar como Administrador.

 

En primer lugar, se le pedirá que seleccione la unidad que desea limpiar. Esto sólo es válido para la unidad del sistema operativo. Entonces seleccione C:\.

image

El utilitario de limpieza de disco analizara y calculara cuánto espacio podrás liberar en ese disco:

image

Si usted no ejecuta Disk Cleanup como Administrador, en este punto, tendrás que tomar un par de pasos adicionales. Usted necesitará hacer clic en el botón de “Limpieza de los archivos de sistema”.

image

En ese momento, Disk Cleanup será re ejecutado ahora como Administrador y usted tendrá que repetir los dos primeros pasos. Entonces ahórrate unos clics adicionales y ejecuta el utilitario como administrador desde el inicio.

Si te desplazas a través de la lista de archivos para borrar, verás la nueva opción añadida por esta actualización junto con la cantidad de espacio que puede liberarse con la ejecución. Se llama Windows Update Cleanup. Nótese que se activa de forma predeterminada.

Nota: Si no se encuentra nada que Windows Update Cleanup pueda procesar, esto no se mostrará como una opción.

Nota importante: Después de realizar esta limpieza, puede que usted no pueda desinstalar ninguna de  las actualizaciones actualmente instaladas. Sin embargo, si necesita revertir a una versión anterior, aún lo podrá hacer manualmente.

image

Si usted se posiciona sobre Windows Update Cleanup, se le presentaran los siguientes datos:

image

"Windows mantiene copias de las actualizaciones instaladas desde Windows Update, incluso después de instalar la versión más reciente de estas. La limpieza de Windows Update elimina las versiones anteriores de las actualizaciones que ya no son necesarias y están tomando espacio. (Muy probablemente necesitará reiniciar el ordenador)."

Cuando de clic en ok, Disk Cleanup se ejecutara y limpiara los archivos innecesarios en su máquina. En la siguiente imagen se puede ver el Windows Update Cleanup ejecutandose:

image

Al terminar el Disk Clean Up se cerrara.

En mi experiencia realizando pruebas con esta actualización, no le pedirá que reinicie. Sin embargo, cuando en el siguiente reinicio, observara la pantalla de configuración de las actualizaciones tanto al apagado como al inicio de Windows.

image

La limpieza toma unos minutos, no se alarme si se no muestra progreso por uno o dos minutos. Cuanto mayor sea la limpieza, más tiempo tomará. Pero incluso en mi máquina con 1,78 GB de archivos para limpiar, esto funcionó en menos de 5 minutos.

image

La cantidad de espacio que usted ahorrará variará por la máquina, pero aquí hay una captura de pantalla de otro ejemplo:

image

 ¿Cómo automatizar el proceso de limpieza de las actualizaciones?

Sé que ejecutar el Disk Cleanup en 10.000 clientes no es la idea de un buen momento. ¿Cómo automatizamos esto?

Bueno, lograr esto al principio es un poco incómodo, pero no está mal. Hace falta un poco de trabajo inicial. Se requiere la exportación de unas llaves de Registro y la importación de estas en los clientes. Podemos usar cleanmgr.exe (la versión de línea de comandos del Disk Cleanup) para automatizar la limpieza de Windows Update.

Unos cuantos detalles previos. Bajo la siguiente clave del Registro de Windows, tenemos una lista de todos los plugins o componentes de limpieza de disco relacionados al Disk Cleanup:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches

Aquí está un ejemplo de lo que parece esta clave del registro en mi cliente de Windows 7 SP1:

image

Dentro de cada uno de estos componentes, hay un valor llamado StateFlags. Tradicionalmente se establece en un valor de 0 ó 1 en estos. Si es 1, esto causa que dicho componente de Disk Cleanup aparezca seleccionado para su ejecución. Acá les muestro como aparece el plugin de Update Cleanup en mi máquina cliente con Windows 7 SP1:

image

Con el fin de automatizar el Disk Cleanup usando cleanmgr.exe, tenemos que publicar  un nuevo valor de registro para el ítem StateFlags esto para los componentes queremos automatizar. Entonces, ¿cómo lo hacemos?

Abra la consola de comandos con derechos de administrador y ejecute el siguiente comando:

cleanmgr.exe /sageset:11

11 puede ser cualquier número aleatorio que elegir entre 0 y 65535.

Parecerá que se está ejecutando el Disk Cleanup. Se le preguntara el disco y se presentarán las opciones tal como lo hicimos antes. Cuando el proceso complete, si usted regresa y mira estos complementos en el registro, notará los hubiera que aquellos que configuro tienen ahora un nuevo valor de StateFlags, el cual corresponde a lo que especificó con sageset. Como ejemplo aquí está ese mismo complemento  ahora:

image

Es importante señalar que ejecutar sageset no realiza la limpieza en sí. Simplemente actualiza la configuración de ese complemento. La limpieza no es realizada hasta que se ejecute el comando que mostraremos más adelante en este artículo.

Ahora que tienes la configuración, usted puede exportar esta clave del registro StateFlags para cada uno de los plugins que desee automatizar e importarlo en sus otros clientes Windows 7 SP1. Sólo asegúrate de exportar la clave de registro StateFlags que recientemente fue añadida por el comando sageset. Este será el que tenga el número que elegiste anexado al final. En la imagen anterior, eso sería StateFlags0011.

Una vez que tienes esta clave exportada, puedes publicar estas entradas mediante una Directiva de Grupo (GPO), archivo tipo BAT u otros medios. La elección es suya.

Después de la importación, entonces puedes iniciar el cleanmgr.exe /sagerun:11 que se ejecutará el mismo proceso de limpieza a través de todos sus clientes.

¡Y voila! ¡Presto! ¡Más espacio libre!

Al igual que las llaves del registro, usted puede publicar una tarea programada que luego ejecute el comando anterior en sus clientes quizás una vez al mes. Sin embargo, no querrá ser tan agresivo y sugiero tener cuidado con la frecuencia de ejecución. Recuerde, después de llevar a cabo esta limpieza, no pueden quitar las actualizaciones de Windows que se hayan aplicado previamente. Claro, aun puede desinstalar las actualizaciones más recientes que se han aplicado después de la limpieza, pero esto podría tomarle todo el camino de regreso al nivel inicial de Service Pack 1. Tampoco deseas que esta tarea programada se ejecute después de aplicar las actualizaciones. Dependiendo de tu horario de parcheo, quizá quieras programar la ejecución de la limpieza uno día o dos antes de aplicación de las nuevas actualizaciones programadas. De forma predeterminada, la opción de ejecutar una tarea programada tan pronto como sea posible después de un reinicio programado no está seleccionado. Esto pues no quieres correr esto inmediatamente después de aplicar nuevas actualizaciones, te aconsejo no marcar esta casilla. Si la configuración anterior se omitiese se lo pierde, deja que la limpieza se ejecute la próxima vez.

image

Feliz día del Windows Update Cleanup!

Charity “El invierno es la nueva temporada de limpieza de primavera” Shelbourne.