PXE (Preboot eXecution Environment) est une norme industrielle développée par Intel dans les années 1990, standardisée dans la spécification Intel/3Com. Elle permet à un ordinateur de démarrer depuis le réseau sans avoir besoin d'un système d'exploitation installé localement ni d'un support physique (clé USB, DVD).
Concrètement, la carte réseau du poste client contient un petit programme intégré (dans sa ROM ou son firmware UEFI) appelé agent PXE. Lors du démarrage, avant même que le disque dur soit consulté, cet agent prend le contrôle et contacte le réseau pour obtenir :
C'est ce mécanisme qui rend le déploiement massif de postes possible : un technicien peut déployer Windows sur cinquante machines simultanément depuis son bureau, sans jamais insérer une seule clé USB.
Voici ce qui se passe exactement lorsqu'un poste démarre en PXE :
Étape 1 — POWER ON & POST
Le BIOS/UEFI effectue son autotest (Power-On Self Test).
La carte réseau est détectée et l'agent PXE s'active.
Étape 2 — DHCP DISCOVER (broadcast)
L'agent PXE envoie un paquet broadcast sur tout le réseau
(255.255.255.255, port UDP 67) pour trouver un serveur DHCP.
Ce paquet contient une extension PXE indiquant "je cherche
aussi un serveur de démarrage".
Étape 3 — DHCP OFFER
Le serveur DHCP répond avec :
• Une adresse IP temporaire pour le client
• Le masque de sous-réseau et la passerelle
• L'option 066 : l'adresse IP du serveur WDS
• L'option 067 : le nom du fichier de démarrage (ex: wdsnbp.com)
Étape 4 — DHCP REQUEST / ACK
Le client accepte l'offre DHCP et confirme.
Il connaît maintenant l'IP du serveur WDS et le fichier à charger.
Étape 5 — TFTP DOWNLOAD
L'agent PXE contacte le serveur WDS via TFTP (UDP port 69)
et télécharge le fichier de démarrage (NBP - Network Bootstrap
Program) en mémoire RAM.
Étape 6 — CHARGEMENT DE WINPE
Le fichier NBP charge à son tour l'environnement WinPE
(Windows Preinstallation Environment) en RAM.
WinPE est un mini-Windows léger qui s'exécute entièrement
en mémoire, sans toucher au disque dur.
Étape 7 — SÉLECTION DE L'IMAGE
WinPE affiche le menu WDS permettant à l'utilisateur
(ou au fichier de réponse) de choisir l'image Windows
à installer.
Étape 8 — DÉPLOIEMENT
L'image d'installation (fichier .WIM) est transférée depuis
le serveur WDS et appliquée sur le disque dur du poste client.
| Protocole | Port | Rôle dans PXE |
|---|---|---|
| DHCP | UDP 67/68 | Attribution de l'IP et localisation du serveur WDS |
| TFTP | UDP 69 | Téléchargement léger du fichier de boot initial |
| SMB/CIFS | TCP 445 | Transfert des images WIM (plus volumineuses) |
| WDS | UDP 4011 | Communication spécifique WDS si DHCP co-hébergé |
💡 Pourquoi TFTP et pas HTTP ? TFTP est un protocole très simple, sans état, qui fonctionne sans configuration réseau avancée. Il est idéal pour les premières secondes du boot, quand le client n'a pas encore de pile réseau complète. Les images WIM, elles, sont transférées via SMB car elles peuvent peser plusieurs gigaoctets.
Deux modes de démarrage coexistent dans les parcs informatiques modernes. Il est important de comprendre leurs différences pour bien configurer WDS.
| Caractéristique | Mode BIOS / Legacy | Mode UEFI |
|---|---|---|
| Fichier de boot PXE | boot\x64\wdsnbp.com |
boot\x64\wdsmgfw.efi |
| Type de partition supporté | MBR (max 2 To par disque) | GPT (jusqu'à 9,4 Zo) |
| Secure Boot | Non supporté | Supporté (optionnel) |
| Interface firmware | Texte uniquement | Graphique possible |
| Standard modern | Non (héritage) | Oui (depuis ~2012) |
💡 Recommandation — Sur Windows Server 2022, configurez WDS pour les deux modes afin de couvrir l'ensemble de votre parc. Les postes récents (depuis 2015 environ) démarrent en UEFI par défaut. Windows 10 et 11 fonctionnent mieux en UEFI avec partitionnement GPT.
WDS (Windows Deployment Services) est un rôle de Windows Server qui fait le lien entre le mécanisme PXE du réseau et les images Windows à déployer. Il joue le rôle de :
WDS est le successeur de RIS (Remote Installation Services), présent dans Windows Server 2003. Depuis Windows Server 2008, WDS est le standard Microsoft pour le déploiement réseau d'OS.
WDS a évolué significativement au fil des versions de Windows Server.
| Version | Année | Apports majeurs |
|---|---|---|
| WDS 2008 R2 | 2009 | Introduction du mode natif, multicast de base, support des images WIM |
| WDS 2012 | 2012 | Découverte automatique via DHCP améliorée, TFTP optimisé, meilleure intégration AD |
| WDS 2012 R2 | 2013 | Amélioration multicast, début du support UEFI, outils PowerShell enrichis |
| WDS 2022 | 2021 | Support UEFI complet, HTTP Boot, gestion PowerShell native, compatibilité Windows 11 |
⚠️ Avis de dépréciation — En 2023, Microsoft a annoncé que WDS est en cours de dépréciation progressive. Il reste pleinement fonctionnel sur Server 2022 et continuera d'être supporté, mais les nouvelles fonctionnalités sont développées dans Microsoft Deployment Toolkit (MDT) et Microsoft Endpoint Configuration Manager (MECM/SCCM). Pour un environnement d'entreprise à long terme, planifiez la migration vers ces outils.
Avant d'installer WDS, votre environnement doit satisfaire les conditions suivantes.
Prérequis réseau et infrastructure :
Prérequis matériels et stockage :
RemoteInstall. Prévoyez au minimum 10 à 20 Go par image Windows stockée.Prérequis de sécurité :
L'installation de WDS s'effectue en ajoutant le rôle Services de déploiement Windows au serveur. Ce rôle comprend deux composants :
# Installer le rôle WDS avec tous les sous-composants et outils de gestion
Install-WindowsFeature `
-Name WDS `
-IncludeManagementTools `
-IncludeAllSubFeature
# Vérifier que le rôle est bien installé
# L'état doit afficher "True" dans la colonne Installed
Get-WindowsFeature WDS*
💡 Redémarrage — L'installation de WDS ne nécessite généralement pas de redémarrage du serveur, contrairement à certains autres rôles Windows.
Cette étape est critique et doit être réalisée avant de configurer WDS. Sans une configuration DHCP correcte, aucun poste client ne pourra trouver le serveur WDS lors de son démarrage PXE.
Lorsqu'un poste démarre en PXE, sa carte réseau n'a pas encore d'adresse IP. Elle envoie un message DHCP en broadcast sur tout le réseau. Le serveur DHCP doit non seulement lui attribuer une IP, mais aussi lui communiquer deux informations essentielles via des options spéciales :
C'est l'architecture privilégiée en environnement professionnel. Elle évite les conflits de ports et simplifie la gestion.
[Poste client] → broadcast UDP 67 → [Serveur DHCP séparé]
↓
Répond avec IP + option 066 + option 067
↓
[Poste client] → TFTP UDP 69 → [Serveur WDS]
Configuration des options DHCP via PowerShell :
# Remplacez 192.168.1.0 par l'ID de votre étendue DHCP
# Remplacez 192.168.1.10 par l'adresse IP de votre serveur WDS
# Option 066 : adresse IP du serveur de démarrage réseau (serveur WDS)
# Cette option indique aux clients PXE où se connecter pour obtenir leur fichier de boot
Set-DhcpServerv4OptionValue `
-ScopeId 192.168.1.0 `
-OptionId 66 `
-Value "192.168.1.10"
# Option 067 : nom du fichier de démarrage à télécharger via TFTP
# Le chemin est relatif à la racine TFTP du serveur WDS
Set-DhcpServerv4OptionValue `
-ScopeId 192.168.1.0 `
-OptionId 67 `
-Value "boot\x64\wdsnbp.com"
Valeurs de l'option 067 selon l'architecture des postes clients :
| Architecture client | Valeur de l'option 067 |
|---|---|
| BIOS / Legacy 64 bits | boot\x64\wdsnbp.com |
| BIOS / Legacy 32 bits | boot\x86\wdsnbp.com |
| UEFI 64 bits | boot\x64\wdsmgfw.efi |
| UEFI 32 bits (rare) | boot\x86\wdsmgfw.efi |
⚠️ Parc hétérogène — Si votre parc contient des postes en BIOS et d'autres en UEFI, WDS peut détecter automatiquement le mode de démarrage du client et servir le bon fichier. Dans ce cas, laissez l'option 067 vide et activez la détection automatique dans WDS (voir section 3.3).
Si vous préférez l'interface graphique, ouvrez la console DHCP (dhcpmgmt.msc) :
Récapitulatif des options à configurer :
| Option | Numéro | Valeur | Obligatoire ? |
|---|---|---|---|
| Boot Server Host Name | 066 | IP ou FQDN du serveur WDS | ✅ Oui |
| Bootfile Name | 067 | Chemin vers le fichier NBP/EFI | ✅ Oui |
| PXEClient | 060 | PXEClient (texte) |
⚠️ Parfois nécessaire |
💡 Option 060 — Cette option identifie explicitement le serveur comme un serveur PXE. Elle est requise dans certains environnements où le serveur DHCP et le serveur WDS sont séparés et que certains équipements réseau (notamment des routeurs Cisco) filtrent les paquets PXE.
Cette configuration est possible mais requiert une attention particulière. Le problème est que DHCP et WDS utilisent tous les deux le port UDP 67, ce qui crée un conflit si rien n'est fait.
La solution est de configurer WDS pour qu'il n'écoute pas sur le port DHCP standard, et d'activer l'option 060 pour que les clients PXE sachent qu'un serveur WDS est disponible à cette adresse.
# Désactiver l'écoute de WDS sur le port DHCP (port 67)
# Cela évite le conflit entre WDS et le service DHCP sur la même machine
WDSUTIL /Set-Server /UseDHCPPorts:No
# Activer l'option DHCP 060 (PXEClient)
# Cela indique aux clients PXE que ce serveur DHCP est aussi un serveur de boot
WDSUTIL /Set-Server /DHCPOption60:Yes
# Vérifier la configuration appliquée
WDSUTIL /Get-Server /Show:Config
🚩 Erreur fréquente — Ne pas exécuter ces commandes lorsque DHCP et WDS sont sur le même serveur provoque un échec silencieux : le client obtient une IP mais ne trouve jamais le serveur de boot. C'est l'une des causes les plus fréquentes de problèmes lors de la mise en place de WDS.
Une fois les options configurées, vérifiez que tout est en ordre :
# Afficher toutes les options configurées sur une étendue
Get-DhcpServerv4OptionValue -ScopeId 192.168.1.0
# Vérifier que le service DHCP est démarré et en démarrage automatique
Get-Service DHCPServer | Select-Object Name, Status, StartType
# Tester la connectivité vers le port WDS depuis un autre poste
Test-NetConnection -ComputerName 192.168.1.10 -Port 4011
# Tester que le port TFTP est accessible (UDP — nécessite un client TFTP)
# tftp 192.168.1.10 get boot\x64\wdsnbp.com test.com
Une fois le rôle installé et le DHCP configuré, il faut initialiser et paramétrer le serveur WDS lui-même.
L'initialisation crée la structure de répertoires nécessaire dans le dossier RemoteInstall. Ce dossier contiendra tous les fichiers de WDS : images de démarrage, images d'installation, images de capture, et fichiers de réponse.
# Initialiser WDS en spécifiant le chemin du répertoire de stockage
# IMPORTANT : Ce chemin doit pointer vers une partition NTFS
# et idéalement sur un disque distinct du volume système
WDSUTIL /Initialize-Server /RemInst:"D:\RemoteInstall"
# Configurer qui peut être déployé :
# All = répondre à tous les clients PXE (pratique en lab)
# Known = répondre seulement aux postes pré-déclarés dans AD (plus sécurisé)
# None = ne répondre à personne (mode maintenance)
WDSUTIL /Set-Server /AnswerClients:All
# Démarrer le service WDS immédiatement
Start-Service WDSServer
# Configurer le service pour démarrer automatiquement à chaque redémarrage
Set-Service WDSServer -StartupType Automatic
# Vérifier que le service est bien démarré
Get-Service WDSServer
Après initialisation, WDS crée automatiquement l'arborescence suivante :
D:\RemoteInstall\
├── Boot\ # Fichiers de démarrage TFTP (wdsnbp.com, wdsmgfw.efi, etc.)
│ ├── x64\
│ └── x86\
├── Images\ # Images d'installation organisées par groupes
│ └── Windows 11\
│ └── install.wim
├── Tmp\ # Fichiers temporaires de transfert
└── WdsClientUnattend\ # Fichiers de réponse WDS
WDS a besoin de deux types d'images pour fonctionner. Il faut les ajouter à partir des fichiers sources présents sur l'ISO Windows.
# Méthode 1 : Monter l'ISO directement sous Windows Server 2022
# Windows attribue automatiquement une lettre de lecteur (ex: E:)
Mount-DiskImage -ImagePath "C:\ISO\Win11_22H2_x64.iso"
# Vérifier quelle lettre de lecteur a été attribuée
Get-Volume | Where-Object {$_.DriveType -eq "CD-ROM"}
# Méthode 2 : Copier les fichiers depuis un DVD ou une clé USB
# Les fichiers sources se trouvent dans le dossier \sources\ du support
L'image de démarrage contient WinPE, l'environnement de préinstallation qui s'exécute en RAM sur le poste client. C'est cette image qui s'affiche à l'écran du client lors du démarrage PXE, avant que l'installation ne commence.
# Ajouter l'image de démarrage depuis les sources de l'ISO
# Le fichier boot.wim se trouve dans le dossier \sources\ du support Windows
WDSUTIL /Add-Image `
/ImageFile:"E:\sources\boot.wim" `
/ImageType:Boot
# Vérifier que l'image de démarrage est bien enregistrée
WDSUTIL /Get-AllImages /ImageType:Boot /Show:All
L'image d'installation contient le système d'exploitation Windows complet qui sera déployé sur le disque dur du poste client. Un seul fichier install.wim peut contenir plusieurs éditions de Windows (Pro, Entreprise, Éducation, etc.).
# Ajouter l'image d'installation dans un groupe d'images nommé "Windows 11"
# Les groupes permettent d'organiser plusieurs versions ou éditions
WDSUTIL /Add-Image `
/ImageFile:"E:\sources\install.wim" `
/ImageType:Install `
/ImageGroup:"Windows 11"
# Lister toutes les images disponibles sur le serveur WDS
WDSUTIL /Get-AllImages /Show:All
💡 Groupes d'images — Les groupes d'images permettent d'organiser logiquement vos images sur le serveur WDS. Par exemple, vous pouvez créer un groupe "Windows 11 - Salles Informatique" et un autre "Windows 11 - Administration". Chaque groupe peut avoir ses propres permissions d'accès et son propre fichier de réponse associé.
Récapitulatif des types d'images dans WDS :
| Type | Fichier source | Rôle |
|---|---|---|
| Boot image | boot.wim |
Lance WinPE sur le client via PXE — c'est l'environnement de démarrage |
| Install image | install.wim |
Contient Windows à déployer — appliqué sur le disque dur du client |
| Capture image | Générée par WDS | Version modifiée de WinPE pour capturer un poste de référence |
Le déploiement via WDS peut suivre deux approches :
Une image de capture est une image de démarrage WinPE spécialement modifiée par WDS pour inclure un assistant graphique de capture. Quand un poste démarre avec cette image, il affiche une interface qui guide l'opérateur pour envoyer une copie du disque vers le serveur WDS au format WIM.
Pour créer une image de capture, WDS se base sur une image de démarrage existante et y injecte les outils de capture.
# Créer l'image de capture à partir d'une boot image existante
# /Image : le nom exact de l'image de démarrage source (voir WDSUTIL /Get-AllImages)
# /Architecture : x64 pour les systèmes 64 bits, x86 pour 32 bits
# /DestinationImage : où stocker le fichier .wim généré et son nom d'affichage
WDSUTIL /New-CaptureImage `
/Image:"Microsoft Windows Setup (x64)" `
/Architecture:x64 `
/DestinationImage `
/FilePath:"D:\RemoteInstall\Capture\CaptureWin11.wim" `
/Name:"Capture Windows 11 - Salle Info"
# Ajouter l'image de capture au catalogue WDS pour la rendre bootable via PXE
WDSUTIL /Add-Image `
/ImageFile:"D:\RemoteInstall\Capture\CaptureWin11.wim" `
/ImageType:Boot
💡 Bonne pratique — Donnez un nom explicite à votre image de capture. Si vous avez plusieurs salles ou plusieurs versions, des noms comme "Capture Windows 11 - Salle A102" évitent les confusions lors du déploiement.
Le poste de référence (aussi appelé "poste maître" ou "golden image") est une machine sur laquelle vous avez installé et configuré Windows exactement comme vous souhaitez que tous les postes déployés se retrouvent : logiciels installés, paramètres régionaux, raccourcis, stratégies locales, etc.
Avant la capture, Sysprep doit obligatoirement être exécuté. Sysprep (System Preparation Tool) généralise l'installation en supprimant tous les identifiants uniques à cette machine : le SID (Security Identifier), le nom d'ordinateur, les informations de licence liées au matériel, et certaines données spécifiques aux pilotes. Sans Sysprep, si vous déployiez l'image sur plusieurs postes, ils auraient tous le même SID, ce qui provoquerait des conflits graves dans Active Directory.
REM Exécuter cette commande sur le poste de référence
REM L'option /generalize supprime les informations uniques (SID, nom, etc.)
REM L'option /oobe configure le poste pour lancer l'OOBE au prochain démarrage
REM L'option /shutdown éteint le poste immédiatement après la préparation
C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown
🚩 Règle absolue — Une fois Sysprep exécuté, ne redémarrez jamais le poste sous Windows avant la capture. Si Windows démarre, il va générer un nouveau SID et reconfigurer des paramètres spécifiques à la machine, ce qui peut invalider partiellement la capture. Si cela arrive, relancez Sysprep avant de capturer.
Win11-SalleInfo-v1.wim)# Une fois la capture terminée, ajouter l'image au catalogue WDS
WDSUTIL /Add-Image `
/ImageFile:"D:\RemoteInstall\Capture\Win11-SalleInfo-v1.wim" `
/ImageType:Install `
/ImageGroup:"Windows 11 - Référence Salle"
Par défaut, WDS déploie les images en unicast : chaque poste client reçoit sa propre copie individuelle de l'image. Si vous déployez simultanément sur 30 postes, le serveur envoie 30 fois la même image, ce qui peut saturer le réseau.
Le multicast résout ce problème en envoyant un seul flux que tous les postes écoutent simultanément. C'est comme une émission de radio : le serveur diffuse une fois, et tous les postes "captent" en même temps. L'économie de bande passante est considérable.
# Créer une transmission multicast pour une image d'installation
# /FriendlyName : nom affiché dans la console WDS
# /Image : nom exact de l'image (tel qu'il apparaît dans WDSUTIL /Get-AllImages)
# /TransmissionType : AutoCast ou ScheduledCast (voir tableau ci-dessous)
WDSUTIL /New-MulticastTransmission `
/FriendlyName:"Deploiement Win11 - Salle Info A102" `
/Image:"Windows 11 Pro" `
/ImageType:Install `
/ImageGroup:"Windows 11" `
/TransmissionType:AutoCast
# Lister les transmissions multicast actives
WDSUTIL /Get-AllMulticastTransmissions /Show:All
# Supprimer une transmission multicast (après déploiement)
WDSUTIL /Delete-MulticastTransmission /FriendlyName:"Deploiement Win11 - Salle Info A102"
Modes de transmission multicast :
| Mode | Comportement | Cas d'utilisation |
|---|---|---|
| Auto-Cast | La transmission démarre dès qu'un premier client se connecte. Les nouveaux clients peuvent rejoindre en cours de route, mais reçoivent l'image depuis le point où elle en est. | Déploiements ponctuels, tests, petits groupes |
| Scheduled-Cast | La transmission attend qu'un nombre minimum de clients soit connecté OU qu'une heure planifiée soit atteinte. Tous les clients commencent en même temps depuis le début. | Salles de classe, déploiements massifs planifiés |
💡 Conseil en salle informatique — Utilisez le mode Scheduled-Cast avec un seuil minimum (ex: 20 clients) pour les déploiements en salle. Tous les postes commenceront la réception simultanément, ce qui optimise le temps total de déploiement.
Pour renforcer la sécurité, WDS peut être configuré pour n'approuver que les postes préalablement déclarés dans Active Directory. Cela évite qu'un inconnu connecte un ordinateur sur le réseau et obtienne une installation Windows sans autorisation.
Quand un poste non déclaré tente de démarrer via PXE, il peut être placé en file d'attente d'approbation dans la console WDS, attendant qu'un administrateur l'autorise manuellement.
# Configurer WDS pour n'accepter que les postes pré-déclarés dans AD
WDSUTIL /Set-Server /AnswerClients:Known
# Pré-déclarer un ordinateur dans AD via son adresse MAC
# L'adresse MAC s'obtient depuis l'étiquette de la carte réseau ou via la commande
# getmac /v sur le poste (avant de l'effacer)
WDSUTIL /Add-Device `
/Device:PC-LABO-01 `
/ID:00-11-22-33-44-55
# Pré-déclarer plusieurs postes en série (exemple pour PC-LABO-01 à PC-LABO-05)
$postes = @(
@{Nom="PC-LABO-01"; MAC="00-11-22-33-44-55"},
@{Nom="PC-LABO-02"; MAC="00-11-22-33-44-56"},
@{Nom="PC-LABO-03"; MAC="00-11-22-33-44-57"}
)
foreach ($poste in $postes) {
WDSUTIL /Add-Device /Device:$($poste.Nom) /ID:$($poste.MAC)
Write-Host "Poste ajouté : $($poste.Nom)"
}
# Lister tous les postes pré-déclarés
WDSUTIL /Get-AllDevices /Show:All
Modes de réponse WDS :
| Valeur /AnswerClients | Comportement |
|---|---|
All |
WDS répond à tous les clients PXE sans restriction |
Known |
WDS répond uniquement aux postes pré-déclarés dans AD |
None |
WDS ne répond à aucun client (mode maintenance / dépannage) |
Un fichier de réponse (aussi appelé Unattend.xml ou fichier d'installation sans assistance) est un fichier XML qui fournit des réponses automatiques à toutes les questions posées lors de l'installation de Windows. Il permet de :
Sans fichier de réponse, chaque déploiement nécessite qu'un technicien reste devant chaque poste pour répondre aux questions de l'assistant d'installation. Avec un fichier de réponse bien configuré, le déploiement est entièrement automatique de A à Z.
Windows traite le fichier de réponse en plusieurs passes (phases), chacune correspondant à un moment précis du processus d'installation :
| Passe | Moment d'exécution | Ce qu'on y configure typiquement |
|---|---|---|
windowsPE |
Pendant WinPE, avant l'installation | Langue de WinPE, acceptation CLUF, clé produit, partitionnement du disque |
offlineServicing |
Pendant l'application de l'image (hors ligne) | Injection de pilotes, de mises à jour, de fonctionnalités Windows |
generalize |
Pendant Sysprep /generalize | Paramètres appliqués lors de la généralisation (rarement utilisé) |
specialize |
Premier démarrage partiel, après application de l'image | Nom d'hôte, jonction au domaine, fuseau horaire, paramètres réseau |
auditSystem |
En mode audit (déploiement avancé) | Tests et personnalisations en mode système |
auditUser |
En mode audit avec session ouverte | Tests utilisateur |
oobeSystem |
Premier démarrage complet, OOBE | Création de comptes, suppression de l'OOBE interactive, scripts de démarrage |
Windows System Image Manager (WSIM) est l'outil officiel Microsoft pour créer et valider les fichiers de réponse. Il est inclus dans le Windows Assessment and Deployment Kit (ADK), téléchargeable gratuitement depuis le site Microsoft.
WSIM offre une interface graphique qui :
# Télécharger et installer l'ADK (à exécuter sur le serveur ou un poste admin)
# Télécharger depuis : https://docs.microsoft.com/windows-hardware/get-started/adk-install
# Installer au minimum les composants :
# - Outils de déploiement (inclut WSIM)
# - Environnement de préinstallation Windows (WinPE Add-on)
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<!--
══════════════════════════════════════════════════════════
PASSE 1 : windowsPE
Exécutée pendant WinPE, avant le début de l'installation.
Configure la langue de l'interface de setup et les données
de licence.
══════════════════════════════════════════════════════════
-->
<settings pass="windowsPE">
<!-- Paramètres régionaux de l'environnement WinPE -->
<component name="Microsoft-Windows-International-Core-WinPE"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
<UILanguage>fr-CA</UILanguage>
<UserLocale>fr-CA</UserLocale>
<InputLocale>fr-CA</InputLocale>
<SystemLocale>fr-CA</SystemLocale>
</component>
<!-- Données d'installation : licence et clé produit -->
<component name="Microsoft-Windows-Setup"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
<UserData>
<ProductKey>
<!-- Remplacez par votre clé de volume KMS ou MAK -->
<Key>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
<!-- WillShowUI : Never = installation silencieuse -->
<WillShowUI>Never</WillShowUI>
</ProductKey>
<AcceptEula>true</AcceptEula>
<FullName>Etudiant</FullName>
<Organization>Cégep</Organization>
</UserData>
<!-- Configuration du disque : partitionnement automatique pour UEFI/GPT -->
<DiskConfiguration>
<Disk wcm:action="add">
<DiskID>0</DiskID>
<WillWipeDisk>true</WillWipeDisk>
<CreatePartitions>
<!-- Partition EFI (obligatoire en UEFI) -->
<CreatePartition wcm:action="add">
<Order>1</Order>
<Size>100</Size>
<Type>EFI</Type>
</CreatePartition>
<!-- Partition MSR (Microsoft Reserved, obligatoire en GPT) -->
<CreatePartition wcm:action="add">
<Order>2</Order>
<Size>16</Size>
<Type>MSR</Type>
</CreatePartition>
<!-- Partition principale Windows -->
<CreatePartition wcm:action="add">
<Order>3</Order>
<Extend>true</Extend>
<Type>Primary</Type>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Order>1</Order>
<PartitionID>1</PartitionID>
<Label>Système</Label>
<Format>FAT32</Format>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Order>2</Order>
<PartitionID>3</PartitionID>
<Label>Windows</Label>
<Format>NTFS</Format>
<Letter>C</Letter>
</ModifyPartition>
</ModifyPartitions>
</Disk>
</DiskConfiguration>
<!-- Image à installer (doit correspondre à une image dans WDS) -->
<ImageInstall>
<OSImage>
<InstallFrom>
<MetaData wcm:action="add">
<Key>/IMAGE/NAME</Key>
<Value>Windows 11 Pro</Value>
</MetaData>
</InstallFrom>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>3</PartitionID>
</InstallTo>
</OSImage>
</ImageInstall>
</component>
</settings>
<!--
══════════════════════════════════════════════════════════
PASSE 2 : specialize
Exécutée lors du premier démarrage partiel du système,
après l'application de l'image Windows. Configure les
paramètres propres à cette instance de Windows.
══════════════════════════════════════════════════════════
-->
<settings pass="specialize">
<!-- Paramètres système : nom d'hôte et fuseau horaire -->
<component name="Microsoft-Windows-Shell-Setup"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS">
<!-- %RAND:4% génère 4 chiffres aléatoires pour garantir l'unicité -->
<ComputerName>LABO-%RAND:4%</ComputerName>
<TimeZone>Eastern Standard Time</TimeZone>
</component>
<!-- Jonction au domaine Active Directory -->
<component name="Microsoft-Windows-UnattendedJoin"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS">
<Identification>
<!-- Nom du domaine AD -->
<JoinDomain>cegep.local</JoinDomain>
<!-- Compte ayant les droits pour joindre des postes au domaine -->
<Credentials>
<Domain>cegep.local</Domain>
<Username>SVC-DeploiementWDS</Username>
<!-- Évitez le compte Administrateur principal ; créez un compte de service dédié -->
<Password>P@ssw0rd!Deploiement2024</Password>
</Credentials>
<!-- OU (Unité d'Organisation) cible dans AD pour les nouveaux postes -->
<MachineObjectOU>OU=Postes-Labos,OU=Informatique,DC=cegep,DC=local</MachineObjectOU>
</Identification>
</component>
<!-- Paramètres réseau -->
<component name="Microsoft-Windows-TCPIP"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS">
<Interfaces>
<Interface wcm:action="add">
<Identifier>Ethernet</Identifier>
<Ipv4Settings>
<!-- DHCP = true pour obtenir l'IP automatiquement -->
<DhcpEnabled>true</DhcpEnabled>
</Ipv4Settings>
</Interface>
</Interfaces>
</component>
</settings>
<!--
══════════════════════════════════════════════════════════
PASSE 3 : oobeSystem
Exécutée lors du premier démarrage complet, quand Windows
afficherait normalement l'assistant de configuration
(OOBE). On supprime toutes ces étapes interactives.
══════════════════════════════════════════════════════════
-->
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS">
<!-- Désactiver toutes les étapes OOBE interactives -->
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<!-- ProtectYourPC : 1 = paramètres recommandés activés -->
<ProtectYourPC>1</ProtectYourPC>
<NetworkLocation>Work</NetworkLocation>
</OOBE>
<!-- Compte administrateur local de secours -->
<!-- Utile si la jonction au domaine échoue -->
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Name>AdminLocal</Name>
<Group>Administrators</Group>
<DisplayName>Administrateur Local</DisplayName>
<Password>
<Value>P@ssw0rdLocal!</Value>
<PlainText>true</PlainText>
</Password>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<!-- Connexion automatique après installation (optionnel, déconseillé en prod) -->
<!-- Commenter ce bloc pour demander une authentification au premier démarrage -->
<AutoLogon>
<Enabled>false</Enabled>
</AutoLogon>
</component>
</settings>
</unattend>
Une fois le fichier Unattend.xml créé et validé par WSIM, il faut l'associer à l'image d'installation dans WDS. Ainsi, chaque fois qu'un poste démarrera sur cette image, le fichier de réponse sera appliqué automatiquement.
# Associer le fichier de réponse à une image d'installation spécifique
WDSUTIL /Set-ImageFile `
/Image:"Windows 11 Pro" `
/ImageGroup:"Windows 11" `
/UnattendFile:"D:\RemoteInstall\Unattend\unattend_win11_salle.xml"
# Vérifier que l'association est correctement configurée
WDSUTIL /Get-ImageFile `
/Image:"Windows 11 Pro" `
/ImageGroup:"Windows 11" `
/Show:All
💡 Un fichier par groupe de postes — Il est courant d'avoir plusieurs fichiers de réponse selon le type de poste : un pour les salles de cours (avec les logiciels pédagogiques), un pour les postes administratifs (avec les logiciels de bureau), etc. Organisez vos groupes d'images WDS en conséquence.
# ── Installation du rôle ──────────────────────────────────────────────────────
Install-WindowsFeature -Name WDS -IncludeManagementTools -IncludeAllSubFeature
# ── Configuration DHCP (serveurs distincts) ───────────────────────────────────
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 66 -Value "192.168.1.10"
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 67 -Value "boot\x64\wdsnbp.com"
# ── Configuration DHCP (co-hébergement DHCP + WDS) ───────────────────────────
WDSUTIL /Set-Server /UseDHCPPorts:No /DHCPOption60:Yes
# ── Initialisation et démarrage WDS ──────────────────────────────────────────
WDSUTIL /Initialize-Server /RemInst:"D:\RemoteInstall"
WDSUTIL /Set-Server /AnswerClients:All
Start-Service WDSServer
Set-Service WDSServer -StartupType Automatic
# ── Gestion des images ────────────────────────────────────────────────────────
WDSUTIL /Add-Image /ImageFile:"E:\sources\boot.wim" /ImageType:Boot
WDSUTIL /Add-Image /ImageFile:"E:\sources\install.wim" /ImageType:Install /ImageGroup:"Windows 11"
WDSUTIL /Get-AllImages /Show:All
# ── Création d'une image de capture ──────────────────────────────────────────
WDSUTIL /New-CaptureImage /Image:"Microsoft Windows Setup (x64)" /Architecture:x64 `
/DestinationImage /FilePath:"D:\RemoteInstall\Capture\Capture.wim" /Name:"Capture Win11"
# ── Multicast ─────────────────────────────────────────────────────────────────
WDSUTIL /New-MulticastTransmission /FriendlyName:"Deploy Salle" /Image:"Windows 11 Pro" `
/ImageType:Install /ImageGroup:"Windows 11" /TransmissionType:AutoCast
WDSUTIL /Get-AllMulticastTransmissions /Show:All
# ── Pré-déclaration des postes ────────────────────────────────────────────────
WDSUTIL /Set-Server /AnswerClients:Known
WDSUTIL /Add-Device /Device:PC-LABO-01 /ID:00-11-22-33-44-55
WDSUTIL /Get-AllDevices /Show:All
# ── Fichier de réponse ────────────────────────────────────────────────────────
WDSUTIL /Set-ImageFile /Image:"Windows 11 Pro" /ImageGroup:"Windows 11" `
/UnattendFile:"D:\RemoteInstall\Unattend\unattend.xml"
# ── Diagnostic et dépannage ───────────────────────────────────────────────────
WDSUTIL /Get-Server /Show:Config
Get-Service WDSServer
Get-EventLog -LogName System -Source "WDSServer" -Newest 20
Get-DhcpServerv4OptionValue -ScopeId 192.168.1.0
PRÉPARATION (une seule fois)
├── 1. Installer le rôle WDS sur Windows Server 2022
├── 2. Configurer les options DHCP 066 et 067
├── 3. Initialiser WDS (WDSUTIL /Initialize-Server)
├── 4. Ajouter l'image de démarrage (boot.wim)
├── 5. Ajouter l'image d'installation (install.wim)
├── 6. Créer et associer un fichier de réponse Unattend.xml
└── 7. (Optionnel) Créer une image de capture pour un poste de référence
DÉPLOIEMENT (pour chaque vague de postes)
├── 1. (Optionnel) Pré-déclarer les postes dans AD par adresse MAC
├── 2. (Optionnel) Créer une transmission multicast si déploiement en masse
├── 3. Allumer les postes clients et les forcer à démarrer via le réseau (F12)
├── 4. Les postes contactent DHCP → reçoivent IP + options 066/067
├── 5. Les postes téléchargent WinPE via TFTP depuis WDS
├── 6. WinPE démarre en RAM, lit le fichier de réponse
└── 7. Windows est installé, configuré et joint au domaine automatiquement
*Cours rédigé pour le Cégep Ahuntsic par son excellence Pablo The God