CustPE : Installer UltraVNC sur un client LiteTouch

I. Présentation

Ce petit tutoriel est destiné à vous expliquer comment installer un outil de prise de main à distance sur le système de déploiement WinPE. L'idée première de cet article est de proposer une alternative à l’outillage DaRT (Diagnosis And Repair Toolkit) fournit aux clients ayant souscrit le contrat Software Assurance MDOP (Microsoft Desktop Optimisation Pack). L'intégration d'une solution de prise de main à distance permet de surveiller le déploiement sur les différents postes de votre entreprise. Notez que l'outil DaRT précité, s'intègre facilement dans le MDT (Microsoft Deployment Toolkit)

Rappel : Le système de déploiement WinPE est minimaliste et ne supporte pas le mode WoW (Windows On Windows, et non World of Warcraft 🙂 ) contrairement aux systèmes d'exploitation dont il partage le noyau. Autrement dit, les outils que vous seriez amené à utiliser dans un environnement WinPE doivent impérativement correspondent à l'architecture retenue. Il va sans dire que les outils 32 bits sont plus répandus que leurs homologues 64 bits.

 

II. L'outil de prise de main à distance

Il existe de nombreux outils dans ce domaine, mais j'ai opté pour UltraVNC en raison de sa gratuité et sa disponibilité dans les 2 architectures 32 et 64 bits. (Vous pouvez télécharger les sources ici

A. Extraire les fichiers UltraVNC

Après avoir téléchargé les sources désirées, procédez à l'extraction du package .msi via la commande suivante :

msiexec /a D:\Downloads\UltraVnc_1205_X64.msi /qb TARGETDIR=D:\CustPE\UltraVNC\UltraVnc_1205_X64

Note : L'option "/a" permet de réaliser une installation dite "administrative". C’est-à-dire d'extraire le contenu sur une ressource locale ou réseau, sans installer le produit. L'option "/qb" effectue l'opération avec l'interface graphique de base sans intervention de l'utilisateur ("quiet modes") - Utilisez "msiexec /?" pour obtenir plus d'informations sur les commutateurs de la commande et au besoin sur mon article relatif à la "gestion des applications"

A l'issue de cette commande vous devriez obtenir un ensemble de fichiers dans le dossier cible (que vous devrez créer préalablement à l'exécution de la commande précitée) - Les fichiers utiles pour cette démonstration sont winvnc.exe et vnchooks.dll. L'exécutable vncviewer nous servira pour réaliser la connexion à distance.

Pour faire court, nous allons simplement générer via le bloc-notes un fichier d'initialisation (nouveau) nommé "UltraVNC.ini" avec le contenu suivant:

[Permissions]
[admin]
AuthRequired=0
HTTPConnect=0
[ultravnc]
[poll]
TurboMode=1
PollUnderCursor=0
PollForeground=1
PollFullScreen=0
OnlyPollConsole=0
OnlyPollOnEvent=1
MaxCpu=40
EnableDriver=0
EnableHook=1
EnableVirtual=0
SingleWindow=0
SingleWindowName=

Ce fichier d'exemple décrit une configuration minimaliste mais suffisante pour notre besoin. Notez toutefois, que cette méthode (AuthRequired=0) n'utilisera aucun mot de passe pour la connexion vers le poste sous WinPE. Si vous souhaitez ajouter des mots de passe pour la connexion et/ou la visualisation, il faudra les générer préalablement en exécutant une fois le programme sur un poste. En effet, les mots de passe sont encodés dans le fichier "UltraVNC.ini" et l'outil ne propose pas de méthode native pour les générer préalablement.

Note : La directive "SingleWindowName=" vide est "normale". Je n'ai pas essayé de la supprimer car de nombreux exemples du site ultravnc, la contienne… et la documentation http://www.uvnc.com/docs/uvnc-server/69-Ultra%20VNCini.html indique " Current not used".

B. Personnalisation du noyau WinPE

Pour rappel, les images d'amorçage WinPE sont disponibles sur les sources ISO ou DVD des systèmes d'exploitation depuis Vista, ou sur le kit de déploiement Windows ADK (Assesment and Deployment Kit) - anciennement connu sous le nom WAIK pour Windows Automated Installation Kit. Ces kits sont d'ailleurs des prérequis à l'utilisation de l'atelier de déploiement (Deployment Workbench) du MDT.

Pour simplifier cet article, nous considérons que vous avez installé l'un de ces kit ainsi que le MDT 2010, 2012 ou 2013 sur un poste de travail (ou un serveur d'atelier technique). Les sources de WinPE (alias client LiteTouch) sont disponibles dans le dossier "Boot" du partage MDT, nommé par défaut "DeploymentShare".

Note : Pour ceux qui débuteraient avec MDT, sans avoir consulter mes tutoriels précédents :-(, sachez qu' il n'y a rien dans ce dossier tant que vous n'en avez pas lancé la fabrication. Pour y remédier, démarrez la console "Deployment Workbench", sélectionnez le nom de votre MDT situé sous la rubrique "Deployement Shares" puis utilisez le choix "Update Deployment Share" via le menu contextuel. Dans l'assistant, cochez éventuellement l'option "Completly regenerate the boot images"

WPE03-img01
Mise à jour et génération des clients LiteTouch

Cliquez 2 fois sur "Next" puis "Finish" (après quelques minutes d'attente…)

C. Modification de l'image WinPE

Là encore, il y a les débutants et les autres… Donc en quelques mots, un noyau WinPE est une image .WIM (plus exactement "\Sources\boot.wim" par défaut) dont le contenu peut être modifié en réalisant préalablement un "montage" vers un dossier vide. Nous allons réaliser cette opération de montage via l'outil DISM présent par défaut depuis Windows 7. Pour les plus allergiques à la ligne de commande, vous pouvez également recourir à l'excellent freeware "GImageX" qui vous pouvez télécharger ici.

Note : N'oubliez pas d'exécuter votre invite de commande ou console Powershell en tant qu'Administrateur.

Nous allons donc préparer une petite structure de travail, puis procéder à la modification du noyau d'un client LiteTouch en procédant comme suit (adaptez les chemins en fonction de votre environnement) :

md D:\CustPE\Mount
md D:\CustPE\Sources
copy \\localhost\DeploymentShare\Boot\LiteTouchPE_x64.wim D:\CustPE\Sources
dism /mount-wim /wimfile:D:\CustPE\Sources\LiteTouchPE_x64.wim /index:1 /mountdir:D:\CustPE\Mount

Résultat affiché :

Outil Gestion et maintenance des images de déploiement
Version : 6.3.9600.17031

Montage de l'image
[==========================100.0%==========================]
L'opération a réussi.

Une fois l'image "montée", procédez à la copie des 2 binaires "winvnc.exe" et "vnchooks.dll" parmi les sources récupérées ainsi qu'au transfert du fichier "UltraVNC.ini" construit précédemment.

copy D:\CustPE\UltraVNC\UltraVnc_1205_X64\winvnc.exe D:\CustPE\Mount\Windows\System32
copy D:\CustPE\UltraVNC\UltraVnc_1205_X64\vnchooks.dll D:\CustPE\Mount\Windows\System32
copy D:\CustPE\UltraVNC\UltraVnc_1205_X64\ultraVNC.ini D:\CustPE\Mount\Windows\System32

Il existe plusieurs points d'entrée pour déclencher des actions automatiques sous WinPE ou pour un client LiteTouch. Au besoin, reportez-vous à mon article sur le sujet ici ("Présentation-de-WinPE") . Pour cette démonstration, j'ai retenu la méthode consistant à modifier le fichier "unattend.xml" situé à la racine du noyau, soit "boot.wim".

Note : Contrairement à un noyau WinPE générique, sur un client LiteTouch le fichier "unattend.xml" existe déjà. Si vous souhaitez exploiter cette fonctionnalité d'accès à distance sur un noyau générique, il faudra vous assurer que le processus d'initialisation interprète le contenu du ce fichier "unattend.xml" en exécutant la commande "wpeinit".

Les commandes, relativement simples, dont nous avons besoin pourraient être exécutées via l'invite de commande mais l'usage d'un petit script vbs me paressait plus élégant. Je vous propose donc de créer un nouveau fichier de script comme suit :

Notepad D:\CustPE\Mount\LaunchVNC.vbs

Recopiez le contenu suivant :

Set oShell = CreateObject("Wscript.Shell")
oShell.Popup "Demonstration d'usage de VNC sous WinPE",3

' Demarrage de l'agent de service UltraVNC
oShell.Run("X:\windows\system32\winvnc.exe"),0,False

' Desactivation du pare-feu WINPE
oShell.Run("wpeutil disablefirewall"),0,True

' Message facultatif
Set oWMIService = GetObject("winmgmts:\\.")
Set oWMIAdapters = oWMIService.ExecQuery ("Select IPAddress from " &_
  "Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each Adapter in oWMIAdapters 
        sIPAddr = Adapter.IPAddress(0)
Next
oShell.Popup "Controle à distance disponible via UltraVNC sur l'adresse " & sIPAddr ,3

Enregistrez les modifications puis quittez le bloc-notes

Note : Ce script affiche des popups de 3 secondes afin de ne pas bloquer le processus en votre absence.

Éditez le fichier d'initialisation "unattend.xml"

Notepad D:\CustPE\Mount\unattend.xml

Et renseignez-le comme suit : (en gras les modifications apportées comparativement à l'original)

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
            <Display>
                <ColorDepth>32</ColorDepth>
                <HorizontalResolution>1024</HorizontalResolution>
                <RefreshRate>60</RefreshRate>
                <VerticalResolution>768</VerticalResolution>
            </Display>
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Description>Lancement de VNC</Description>
                    <Order>1</Order>
                    <Path>wscript.exe X:\LaunchVNC.vbs</Path>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Description>Lite Touch PE</Description>
                    <Order>2</Order>
                    <Path>wscript.exe X:\Deploy\Scripts\LiteTouch.wsf</Path>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
    </settings>
</unattend>

Enregistrez les modifications puis quittez le bloc-notes

Note : Si vous créez un nouveau fichier, faites bien attention à l'architecture indiquée "amd64" ou "x86". En effet, en cas de divergence avec le noyau, l'interprétation des directives est tout bonnement ignorée.

Procédez au "démontage de l'image WIM" via la commande suivante:

dism /unmount-wim /mountdir:D:\CustPE\Mount /commit

Résultat affiché :

Outil Gestion et maintenance des images de déploiement
Version : 6.3.9600.17031

Fichier image : C:\CustPE\Sources\LiteTouchPE_x64.wim
Index de l'image : 1
Enregistrement de l'image
[==========================100.0%==========================]
Démontage de l'image
[==========================100.0%==========================]
L'opération a réussi.

 

III. Utilisation du noyau WinPE modifié

Pour utiliser ce noyau WinPE modifié vous devez le réintégrer dans une structure d'amorçage WDS, ISO ou un DVD. En vous reportant à mes différents tutoriels, donc celui concernant la "Dématérialisation des vos supports avec WDS", vous devriez vous en sortir 🙂

A. Via Windows Deployment Services

Exemple : Import d'une image de démarrage sous Windows Deployment Services :

WPE03-img02
Ajout d'une image de démarrage dans WDS

B. Via un support amovible de type USB

Si vous n'avez pas d'infrastructure WDS et qu'une modeste clé USB (mini 512 Mo) sous la main, vous pouvez suivre la procédure suivante :

1. Formatage du support USB

Formatez la clé via "diskmgmt.msc" ou "diskpart" pour les plus aguerris

Diskpart
Diskpart> list Disk
Diskpart> select Disk 2
Diskpart> clean
Diskpart> create part primary
Diskpart> format fs=ntfs quick
Diskpart> active 
Diskpart> assign letter=K:
Diskpart> exit

Faites attention, ne vous trompez pas de cible ! - Lorsque vous taperez la commande "list disk", vous obtiendrez un résultat du genre :

N° disque Statut Taille Libre Dyn GPT
--------- ------------- ------- ------- --- ---
Disque 0 En ligne 40 G octets 0 octets
Disque 1 En ligne 60 G octets 1024 K octets
Disque 2 En ligne 512 M octets 0 octets

Et il n'y guère d'information autre que la taille, pour vous permettre de localiser votre clé USB. Je vous ai bien dit que "diskpart" n'était pas pour les néophytes, donc si vous avez vraiment des doutes, utilisez la console graphique. Pour les aficionados de la ligne de commande, sachez qu'il y a toujours quelques commandes alambiquées pour identifier vos disques flash USB, comme par exemple sous Powershell :

gwmi -Class win32_logicaldisk | ? { $_.driveType -eq 2 }

ou encore

gwmi win32_diskdrive | ? {$_.interfacetype -eq "USB"}

2. Copie des fichiers d'amorçage

Copiez les fichiers d'amorçage du MDT vers cette clé (selon l'architecture).

xcopy \\localhost\DeploymentShare\Boot\x64\*.* k:\ /e /s

3. Copie du noyau modifié

Créez un dossier "\Sources" puis recopiez le noyau modifié :

md k:\Sources
copy D:\CustPE\Sources\LiteTouchPE_x64.wim k:\Sources\Boot.wim

A ce stade, votre support est prêt à l'emploi.

Note 1 : Pour la réussite de cette démonstration, vous devez disposer d'un environnement DHCP afin que le client obtienne une adresse IP valide.

Note 2 : Attention, vous perdrez ces modifications en cas de régénération des images LiteTouch (cf "Update Deployment Share".

 

C. Tests du résultat

Pour faciliter l'identification des postes cibles, je vous conseille d'activer le mode "Monitoring" au sein de MDT (2012 et +). Pour cela, il suffit de démarrer la console "Deployment Workbench", de sélectionner le nom de votre MDT situé sous la rubrique "Deployement Shares" et d'utiliser le menu contextuel "Propriétés". Allez ensuite sous l'onglet "Monitoring" puis cochez la case "Enable monitoring for this deployement share" et cliquez sur "Appliquer" et "OK" pour valider ce changement.

WPE03-img03
Activation de la surveillance des déploiements sous MDT (Monitoring)

Démarrez votre poste de test sur l'image LiteTouch modifiée. Vous devriez voir apparaitre furtivement les messages d'information du script puis l'écran d'accueil de l'assistant LiteTouch puis les séquences de taches (Variable selon votre configuration MDT).

WPE03-img04
Exemple d'affichage  de l'assistant LiteTouch

A partir de votre machine MDT, lancez la console "Deployment Workbench" puis sélectionnez la rubrique "Monitoring" et appuyez sur [F5] afin d'actualiser l'affichage. Le(s) poste(s) en cours d'installation devrai(ent) apparaitre.

WPE03-img05
Exemple de surveillance d'un déploiement sous MDT

Maintenant, il vous suffit de démarrer le programme "vncviewer.exe" (téléchargé précédemment) puis d'entrer le nom du poste dans la zone "VNC Server"  et cliquez sur le bouton "Connect"

WPE03-img06
Connexion à distance via VNC Viewer

Patientez quelques secondes avant que la connexion soit établie.

WPE03-img07
Etat de la communication VNC

Vous pouvez alors surveiller (ou interagir en ouvrant une invite de commande via [F8] par exemple) sur le poste tant qu'il exécute le noyau WinPE, c’est-à-dire jusqu'à ce qu'il effectue son premier redémarrage. (après il sera trop tard 🙁 , à moins que vous n'ayez activé le bureau à distance ou vnc sur le poste )

WPE03-img08
Connexion à distance établie sur le client LTI via VNC

Il y existe assurément d'autres techniques pour parvenir à ce genre de résultat mais je vous assure que celle-ci est fonctionnelle et accessible à tous :-)…

Facultatif : L'un des petits défauts de cette méthode est la perte des modifications lors de la régénération des clients LiteTouch. Pour pallier cette contrainte, sur votre machine MDT, vous devrez remplacer le(s) fichier(s) de modèle de l'ADK ci-après par le fichier "unattend.xml" modifié (32 / 64 bits).

  • "C:\Program Files\Microsoft Deployment Toolkit\Templates\Unattend_PE_x64.xml"
  • "C:\Program Files\Microsoft Deployment Toolkit\Templates\Unattend_PE_x86.xml"

Vous trouverez des informations sur ce sujet dans le tutoriel "Maîtrise des images de démarrage LTI / WinPE"

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Christophe Mandin

Consultant/Formateur indépendant en quête de solutions et de moyens alliant efficacement la théorie et la pratique. Fort d’une expérience de plusieurs dizaines années dans l’informatique, j’ai pu apprécier de nombreuses problématiques, développer des qualités rédactionnelles et un esprit de synthèse, tout en me forgeant de solides fondamentaux théoriques, indispensables à toute analyse et mise en œuvre fonctionnelle. Malgré toutes ces années, je ne me lasse pas du plaisir de transmettre mes connaissances en misant sur 3 critères que sont les fondamentaux, la simplicité et le pragmatisme. Bien à vous. Retrouvez-moi sur LinkedIn : Christophe Mandin

Nombre de posts de cet auteur : 32.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.