Skip to content


SCCM, Windows 8.1 y el inicio de sesión eterno

Hoy, en uno de los clientes en los que participo para migrar a Windows 8.1 con System Center Configuration Manager, me he encontrado con una situación única. Cuando los usuarios iniciaban sesión en un equipo limpio (solo aplicaciones, pero sin hacer sysprep ni nada parecido), el tiempo de espera hasta que aparecía el escritorio era de aproximadamente 20 minutos. La pantalla se quedaba clavada durante cerca de 15 minutos en este paso:

fixedbyvonnie-windows-10-almost-ready

 

El comportamiento exacto era el siguiente:

  • El usuario escribe su nombre de usuario y contraseña
  • Windows pasa cerca de un minuto mostrando el primer mensaje de inicio con la rueda de puntos girando.
  • A continuación se inicia el proceso de generación del perfil, con ese psicodélico cambio del color de fondo y los mensajes de la tienda, etc.
  • 20 minutos despues, aparece el escritorio.
  • La actividad de disco es muy baja y en ocasiones nula.

Evidentemente, no podía entregar una maqueta en este estado, y afortunadamente se ha detectado en la primera fase del piloto y no ha ido a más. Pero encontrar el motivo de este lento inicio de sesión tampoco ha sido fácil. No existe ningún artículo de Microsoft donde se explique el motivo, y los foros/Google no ofrecen mucha solución.

Así que tras probar y probar, he localizado donde se originaba el problema. Y estaba frente a mí. Se trata de las aplicaciones de la Windows Store. Por lo visto en el proceso de inicio de sesión, Windows conecta con la Store y realiza varias actualizaciones y descarga de datos. Si la conexión a Internet no es fluida o hay algún proxy o firewall por medio, puede provocar una ralentización en el inicio de sesión.

Afortunadamente, el cliente en el que estoy ha explicitado que no quiere la tienda de Windows, así que además de desactivarla (que no soluciona el problema), he aprovechado para desinstalar todas las Appx durante el despliegue del sistema operativo.

El proceso ha sido sencillo. Primero he generado un script en VisualBasic que se encarga de eliminar todas las Appx:

Set objShell = CreateObject("Wscript.shell")
Install = objShell.run("powershell -executionpolicy bypass -command Get-AppxPackage | Remove-AppxPackage", 0, true)

No he creado una tarea en PowerShell porque no existe una entidad certificadora para firmar los scripts en PowerShell. Y como la ejecución de PS es muy puñetera, he preferido saltármelo todo con un VBS.

A continuación he generado un paquete con ese script, al que le he creado un programa.

RemoveAllAppx

Finalmente he incrustado el paquete en la Secuencia de Tareas, para que se ejecute en algun momento antes de finalizar.

RemoveAllAppxTS

 

Ahora, al ejecutar el despliegue de un sistema operativo, esa tarea se ejecuta, y lanza el script. Éste se encarga de eliminar cualquier Appx instalada por defecto con Windows.

Y se acabó el problema!

 

Posted in General, Software, System Center.

Tagged with , , , , , , , , , , , , .