Header Ads

Automatizando sysprep

Sysprep es una herramienta de preparación de sistemas operativos de Microsoft. Puede ser usada en entorno reales o virtualizados. Normalmente la usan las organizaciones, fabricantes y sysadmins para poder instalar el sistema operativo y aplicaciones en muchos equipos.
La ventaja de sysprep es que nos permite crear una versión de Windows con todo el software incluido y lista para ser clonada y volcada en cualquier otro equipo o máquina virtual sin importar sus especificaciones de hardware y, al menos en teoría, sin los componentes de identificación del sistema (aunque sabemos que esta afirmación es incorrecta y lo veremos más abajo y no aplica en todos los escenarios); algo que no se puede hacer con un simple clonado y volcado de disco de un PC a otro.  
En internet podemos encontrar muchos tutoriales de cómo usar sysprep, por tanto hoy vamos automatizar este proceso con un batch script para windows 10.
Paso previos
- Se recomienda que haga una instalación en limpio de su sistema operativo con el software que vaya a usar en el PC con Windows 10 (para que no contenga información personal o empresarial), actualice todos los parches de seguridad, configure todas las aplicaciones a su antojo. Si tiene alguna solución de seguridad de terceros (antivirus, antimalware, antiransomware, firewall, etc), proceda a desinstalarla (no basta con desactivarla). También desactive el antivirus de Windows
Desactivando Antivirus de Windows 10 para evitar que elimine el .bat de sysprep
- Reinicie el PC y ya en el escritorio y después de haber instalado todo lo que necesite, cierre todos programas y ventanas abiertas y no ejecute o instale ningún programa.
- Cree un punto de restauración por si algo sale mal (si tiene un SSD puede que esta opción esté desactivada por defecto)
- Desconecte el equipo de internet y desactive la licencia de Windows. Pueden usar el siguiente script en batch (unlicence.bat y ejecutarlo como administrador):
@echo off
start /w slmgr /upk
start /w slmgr /cpky
exit
Nota: Si previamente ya había activado la licencia de Windows 10 por internet, esta queda almacenada en la nube de Microsoft, por tanto, la próxima vez que se conecte, Windows se activará automáticamente (si no lo hace, ejecute la activación manualmente), sin embargo, por precaución, se recomienda que haga backup de la licencia de Windows antes de ejecutar los comandos.
- Se recomienda no instalar drivers propios del equipo, evitar las actualizaciones y cualquier otra instalación que pueda crear identificadores del equipo de origen. Lo anterior para evitar el clásico error 0xC0EA000A a la hora de activar la licencia de Windows y otros males de los que padece sysprep.  
Ejecutando sysprep
Si ejecutamos sysprep directamente en Windows 10 saldrá el siguiente error:
Error sysprep
La causa es la basura (bloatware) que implementa Microsoft en Windows, especialmente las aplicaciones preinstaladas por defecto de Microsoft Store y que traen identificadores que generan errores en la generalización. 
Entonces, para automatizar sysprep y de paso eliminar estas aplicaciones, creamos un batch script (sysprep.bat) lo guardamos en el escritorio con el siguiente contenido:
Importante: No se recomienda ejecutar este script en Windows 11, ya que elimina la barra de inicio, reemplazándola por la de Windows 10.
@echo off
@echo . 2>"sysprep.ps1"
(
  echo;Import-Module appx
  echo;Import-Module dism
  echo;Get-AppxPackage ^| Remove-AppxPackage
) >>"sysprep.ps1"
start /wait PowerShell.exe -NoProfile -Command "& {Start-Process -Wait PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
start /wait %windir%\system32\sysprep\sysprep.exe
del sysprep.ps1
exit
PD: Puede agregar "AllUsers" para todos los usuarios, pero no es imprescindible:
Get-AppxPackage -AllUsers ^| Remove-AppxPackage
Ahora lo ejecutamos (sysprep.bat) sin privilegios (ojo: solo doble clic). El script pedirá privilegios sobre Windows PowerShell, pulsará ACEPTAR e iniciará la limpieza de las apps de Microsoft Store. 
Powershell limpiando app de Microsoft Store del PC
Al cerrar automáticamente la ventana de PowerShell, lanzará la ventana de sysprep
Y seleccionamos las opciones tal como aparecen en la imagen superior (marcar la casilla 'Generalizar' (generalize) y 'Apagar' (shutdown) y pulsamos OK e iniciará.
Al terminar el equipo se apagará y ya podemos clonar el disco y volcarlo a otros equipos con el software de nuestra preferencia (Clonezilla, Acronis True Image, AOMEI, etc.)
Importante
Cuando inicie el equipo clonado o el original (después de terminado sysprep y apagado el equipo), asegúrese de estar desconectado de Internet antes de iniciar. Luego pedirá la creación de una cuenta local (opción 'Continuar con la configuración limitada') y le asignamos un nombre diferente a la original (por ejemplo podemos nombrarla USERTMP). Una vez en el escritorio, cerramos la sesión de la cuenta USERTMP e ingresamos a la cuenta real y eliminamos la cuenta USERTMP.
Eliminando cuenta temporal USERTMP
Y finalmente nos conectamos a Internet y activamos Windows.
Importante
Tenga en cuenta que el comando de powershell elimina "todas" las aplicaciones que pueden generar conflicto, pero puede afectar algunas esenciales (Store, Windows Security Center, etc). Entonces, para restaurarlas, vuelva a registrar las apps de Windows.
1. Presione las teclas Windows + X y haga clic en Windows PowerShell (Admin).
2. Copie y pegue el comando y presione Entrar:
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$ ($ _. InstallLocation) \ AppXManifest.xml"}
O solo para Windows Security:
Add-AppxPackage -Register -DisableDevelopmentMode "C:\Windows\SystemApps\Microsoft.Windows.SecHealthUI_cw5n1h2txyewy\AppXManifest.xml" 
O para restablecer/reinstalar la aplicación Store (ejecútelo en el terminal de Windows con privilegios):
wsreset -i
Otra alternativa son las apps para remover la basura de Windows 10 (y proteger nuestra privacidad), como O&O AppBusterWin.PrivacyW10Privacy,  Debloat,  bloatbox, etc.
Posible BUG (Jul/2022)
En Windows 10 20H2/21H1/21H2 y Windows 11 21H1/22H2 se están presentando problemas después de ejecutar sysprep y al iniciar en modo seguro, como bien reportan en este enlace.
Nota: Para iniciar en modo seguro/normal puede usar el batch safemode.bat (ejecútelo con privilegios).
Workaround: 
Hasta tanto se determine si es un bug o un error causado por alguna aplicación por defecto de Windows, se recomienda que, después de ejecutar sysprep y hacer la imagen de disco, inicie el PC normalmente y crear una nueva cuenta administrativa (no temporal), con un nombre de usuario real que vayamos a usar. Y una vez en el escritorio, eliminar la cuenta anterior, donde se ejecutó sysprep.
Conclusión
sysprep está lejos de ser una herramienta ideal, ya que no es muy tolerante a fallos, el rearmado en caso de fallas es una pesadilla y no siempre funciona el despliegue, sin embargo, a la fecha, no conocemos otra alternativa para su reemplazo y AOMEI Image Deploy (y similares), siguen dependiendo de sysprep como paso previo y se limitan al despliegue.
Otro problema es que Microsoft planea obligar a los usuarios a registrar una cuenta de correo de outlook para poder ingresar al sistema y esto haría inviable el despliegue de imágenes de disco con sysprep, ya que no se podrían crear cuentas locales.
Con la tecnología de Blogger.