CustPE : Réaliser un dual boot WinPE LTI/Windows
I. Présentation
Tout comme n'importe quel technicien Windows, vous êtes surement confronté régulièrement au besoin d'une réinstallation complète à partir un système pourtant opérationnel. Avec MDT, c'est plutôt simple et cela passe par les scénarios de déploiement LiteTouch de type "NEW-COMPUTER". Toutefois, pour passer par ces étapes, il est nécessaire de redémarrer l'ordinateur concerné à partir d'un média contenant le client LiteTouch.
Imaginons donc que la machine concernée est contrôlée à distance et que pour couronner le tout vous ne bénéficiez pas d'un environnement compatible PXE. Je considère que vous n'avez pas non plus de solution telles que Landesk, ni SCCM. Le poste est donc physiquement inaccessible, et il n'y a aucune "petite main" sur les lieux pour insérer une clé USB, ou autre CD/DVD…
La 1ère solution à laquelle on pourrait penser serait de faire pointer un raccourci vers le script "\\MDTServer\DeploymentShare\Scripts\litetouch.vbs" en ajoutant le commutateur "/deploymenttype:NEWCOMPUTER" –> Ça commence bien et puis ça plante au moment où la séquence tente de générer les partitions : eh oui, c'est logique puisque le disque concerné est en cours d’utilisation, c'est ballot …
Dans de cas de figure, il m'a semblé alors pertinent d'envisager une méthode consistant à redémarrer le poste à partir d'une image WinPE LiteTouch, préalablement copiée sur un des disques locaux, puis modifier la séquence d'amorçage locale avec de charger ce noyau.
II. Détail de la solution proposée
La procédure que je vous propose consiste donc à créer un fichier batch chargé de copier l'une des images WinPE LiteTouch normalement située dans le dossier "\Deploymentshare\Boot" de la structure MDT et configurer un double-amorçage sur la machine concernée.
Créez par exemple, sur la racine de la structure MDT, un fichier "SelfRecover.bat" dans lequel nous allons copier le contenu ci-après.
Vous pouvez indifféremment choisir l'image 32 ou 64 bits en modifiant la variable "ArchiPE". Pensez à vérifier que les fichiers "LiteTouchePE*.wim" et "boot.sdi" soient bien présents sur la ressource partagée MDT. Dans le doute, utilisez préalablement le menu "Update Deployment Share" pour régénérer les images à partir de la console MDT.
@echo off cd /d %SystemDrive%\ echo ---- Verification du niveau de privileges whoami /groups | findstr "S-1-16-12288" > nul && set runLevel=admin if not "%runLevel%"=="admin" goto notAdmin cls echo Attention, la reinstallation complete du poste est imminente !... echo Toutes les donnees non sauvegardees seront perdues. echo Appuyez sur [Ctrl]+[C] pour stopper ce processus ou pause set RecoverPath=LocalRecover set ShareMDT=\\WDS-MDT\DeploymentShare$ set ArchiPE=x86 rem set ArchiPE=x64 net use %ShareMDT% if not errorlevel 0 goto notAdmin echo ---- copie du noyau WinPE %ArchiPE% vers le disque local mkdir %SystemDrive%\%RecoverPath% copy %ShareMDT%\Boot\LiteTouchPE_%ArchiPE%.wim %SystemDrive%\%RecoverPath%\Boot.wim copy %ShareMDT%\Boot\%ArchiPE%\Boot\boot.sdi %SystemDrive%\%RecoverPath%\boot.sdi echo ---- modification de la sequence d'amorcage locale bcdedit /create {ramdiskoptions} /d "Reinstallation du systeme" bcdedit /set {ramdiskoptions} ramdisksdidevice partition=%SystemDrive% bcdedit /set {ramdiskoptions} ramdisksdipath \%RecoverPath%\boot.sdi for /f "tokens=2" %%i in ('bcdedit /create /d "Reinstallation du systeme" /application OSLOADER') do set NewGUID=%%i echo Le nouveau GUID est %NewGUID% if errorlevel 1 goto erreur bcdedit /set %NewGUID% device ramdisk=[%SystemDrive%]\%RecoverPath%\boot.wim,{ramdiskoptions} bcdedit /set %NewGUID% osdevice ramdisk=[%SystemDrive%]\%RecoverPath%\boot.wim,{ramdiskoptions} bcdedit /set %NewGUID% systemroot \windows bcdedit /set %NewGUID% winpe yes bcdedit /set %NewGUID% detecthal yes bcdedit /displayorder %NewGUID% /addlast bcdedit /default %NewGUID% bcdedit /timeout 5 if errorlevel 0 goto suite :erreur Echo une erreur est survenue - procedure abandonnee. pause goto fin :notAdmin echo Privileges insuffisants : Ce script doit etre execute en tant qu'Administrateur et la ressource MDT partagee doit etre accessible. pause goto fin :suite echo Le système va redemarrer dans 30 secondes shutdown -r -f -t 30 :fin
Attention, notez que ce script de configuration de l’amorçage requiert les privilèges d'administrateur (test réalisé via la commande "whoami") et que la ressource partagée MDT doit être accessible.
Au prochain redémarrage, l’utilisateur aura encore la possibilité de démarrer son système, durant 5 secondes : Sauf si vous exécutez cette opération à distance et qu'il n'y a personne devant l'ordinateur en question pour modifier cette action 🙂
Après, il faudra bien sûr que la séquence d'installation soit automatisée, et sans intervention requise. Sinon, prévoyez d'ajouter un contrôle à distance dans votre client LiteTouch. Au besoin, vous pouvez consulter mon article sur "Installer UltraVNC dans WinPE" 🙂
Bonjour,
super tuto 🙂
la meme choses existe pour restaurer ( a partir du serveur) une image disk ?
Merci 🙂
Bonjour Lionel,
Désolé mais je ne suis pas sur de comprendre la question. Ce tuto illustre une technique permettant d’installer une amorce WinPE alternative. La suite, au prochain redémarrage, dépend du noyau que l’on démarre, ici j’ai pris l’exemple d’un noyau LiteTouch, qui peut permettre de restaurer le système selon les séquences disponibles sur le MDT. Il est tout à fait possible de s’inspirer de cette technique pour installer un autre noyau, voir même un WinRE pour solliciter une sauvegarde de type Windows Backup.
Cordialement,
bonjour
votre SelfRecover.bat de boot est bien
comment modifier pour trouver le chemin pour qu ‘il boot sur un partition que l’on a creer recovery soit mbr ou uefi
Bonjour,
Je n’ai jamais eu ce genre de besoin (en script) et cela me parait compliqué à automatiser.
Dans cet exemple, on ajoute une entrée dont on connait l’identifiant. (Typiquement pour une réinstallation à distance, sans présence humaine sur le poste à réinstaller).
Pour trouver celui d’une partition « recovery » existante, c’est une autre affaire… Il faut probablement chercher du coté de bcdedit afin de lire le BCD existant et trouver le déterminant pour ensuite le mettre à jour (via bcdedit /set …).
Désolé mais je ne connais aucune solution simple, surtout en batch.
Bon courage