01Comprendre le projet et l'architecture
Installer Windows manuellement sur plusieurs postes — mêmes applications, mêmes comptes, mêmes réglages à chaque fois — est long et source d'erreurs. Le Microsoft Deployment Toolkit (MDT) industrialise ce processus : on crée une image de référence unique, puis on la déploie automatiquement sur autant de machines qu'on veut.
Le projet suit quatre grandes phases : installer les services sur le serveur, capturer une image de référence, configurer le déploiement automatisé, puis déployer sur les postes.
Le vocabulaire indispensable
- Deployment Share — dossier partagé contenant tout : images, applications, scripts, séquences. Le cœur de MDT.
- Task Sequence — liste ordonnée des actions d'un déploiement ou d'une capture.
- WinPE — mini-système qui démarre une machine pour installer ou capturer Windows.
- Sysprep — outil Microsoft qui « banalise » une installation (suppression du SID, des comptes) pour la rendre déployable ailleurs.
- WDS — service de démarrage réseau (PXE) qui permet aux postes de booter sans clé USB.
- ADK — kit Microsoft fournissant les outils de déploiement, dont WinPE.
Environnement de référence du projet
Pour rendre le guide concret, on utilise ces valeurs — à adapter à votre réseau :
- Serveur : DEPLOY-SRV, sous Windows Server 2022
- Adresse IP fixe :
192.168.10.10 - Deployment Share :
C:\DeploymentShare, partagé sousDeploymentShare$ - Poste(s) cible(s) : machines à déployer sur le même réseau
02Préparer le serveur Windows Server 2022
On part d'une installation propre de Windows Server 2022. Avant tout, on fixe une adresse IP statique : un serveur de déploiement (surtout avec DHCP/PXE) ne doit jamais changer d'adresse.
Fixer l'IP statique (PowerShell admin)
# Repérer le nom de la carte réseau
Get-NetAdapter
# Définir IP fixe, masque, passerelle (adapter à votre réseau)
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.10.10 `
-PrefixLength 24 -DefaultGateway 192.168.10.1
# Définir le DNS
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 192.168.10.1,8.8.8.8
Renommer le serveur et redémarrer
Rename-Computer -NewName "DEPLOY-SRV" -Restart
Conseil : installez les mises à jour Windows avant de commencer, et vérifiez l'accès Internet du serveur (nécessaire pour télécharger l'ADK et MDT).
03Installer Windows ADK et le module WinPE
MDT s'appuie sur le Windows Assessment and Deployment Kit (ADK). Depuis Windows 10 1809, WinPE est un module séparé qu'il faut installer en plus de l'ADK — c'est une erreur classique de l'oublier.
Étape 3.1 — Télécharger
Depuis le site Microsoft (« Download and install the Windows ADK »), récupérer deux installeurs :
- Windows ADK (adksetup.exe)
- Windows PE add-on for the ADK (adkwinpesetup.exe)
Version : prendre une version d'ADK compatible avec Windows 11. Idéalement la version de l'ADK correspondant à la build de Windows 11 que vous déployez.
Étape 3.2 — Installer l'ADK
Lancer adksetup.exe. Dans la sélection des fonctionnalités, cocher au minimum :
- Deployment Tools
- Imaging and Configuration Designer (ICD) (optionnel mais utile)
- User State Migration Tool (USMT)
Étape 3.3 — Installer le module WinPE
Lancer ensuite adkwinpesetup.exe et installer Windows Preinstallation Environment. Sans ce module, MDT ne pourra pas générer les images de boot.
Vérification : après installation, le dossier C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment doit exister.
04Installer MDT
Télécharger MicrosoftDeploymentToolkit_x64.msi depuis le site Microsoft, puis l'installer (suivant → suivant → installer ; aucune option particulière). L'ordre est important : ADK + WinPE d'abord, MDT ensuite.
Une fois installé, MDT ajoute la console Deployment Workbench, accessible depuis le menu Démarrer. C'est l'interface centrale du projet.
Vérification : ouvrir Deployment Workbench. S'il se lance sans erreur et affiche « Information Center » et « Deployment Shares », l'installation est bonne.
05Installer les rôles DHCP et WDS
Pour un déploiement par le réseau (PXE), il faut deux rôles : WDS (démarrage réseau) et un DHCP qui attribue les adresses et oriente les postes vers le serveur de boot. On les installe en PowerShell.
Étape 5.1 — Installer les rôles
Install-WindowsFeature -Name WDS -IncludeManagementTools
Install-WindowsFeature -Name DHCP -IncludeManagementTools
Étape 5.2 — Configurer le DHCP
Créer une étendue (plage d'adresses distribuées aux postes). Exemple pour le réseau 192.168.10.0/24 :
Add-DhcpServerv4Scope -Name "Deploiement" `
-StartRange 192.168.10.100 -EndRange 192.168.10.200 `
-SubnetMask 255.255.255.0 -State Active
# Passerelle et DNS distribués aux clients
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 -Router 192.168.10.1 -DnsServer 192.168.10.1
Réseau existant : s'il y a déjà un serveur DHCP (box, autre serveur), ne créez pas un second DHCP concurrent — cela provoquerait des conflits. Dans ce cas, on configure le DHCP existant avec les options PXE, ou on isole le serveur sur un réseau de déploiement dédié.
Étape 5.3 — Configurer WDS
Initialiser WDS puis l'autoriser à répondre aux demandes PXE :
wdsutil /Initialize-Server /RemInst:"C:\RemoteInstall"
wdsutil /Set-Server /AnswerClients:All
La configuration des images de boot dans WDS se fera après la génération du média MDT (section 11).
06Pare-feu, options PXE et démarrage UEFI
C'est ici que la plupart des déploiements échouent au premier essai : le poste démarre, cherche le réseau… et ne trouve rien. Trois causes, dans l'ordre de fréquence.
Ouvrir le pare-feu du serveur
Le PXE utilise le TFTP (port 69/UDP) et le DHCP (67-68/UDP). Le partage passe par SMB (445/TCP). Windows Firewall les bloque souvent.
# Autoriser les services de déploiement
Enable-NetFirewallRule -DisplayGroup "Services de déploiement Windows"
Enable-NetFirewallRule -DisplayGroup "Windows Deployment Services"
Enable-NetFirewallRule -DisplayGroup "Serveur DHCP"
Enable-NetFirewallRule -DisplayGroup "Partage de fichiers et d'imprimantes"
# Vérifier que le TFTP écoute bien
Get-NetUDPEndpoint -LocalPort 69 -ErrorAction SilentlyContinue
Les options DHCP 66 et 67
Le DHCP doit indiquer au poste où trouver le serveur de boot (option 66) et quel fichier démarrer (option 67).
Cas simple : si DHCP et WDS sont sur le même serveur, ne définissez pas les options 66/67. WDS les gère lui-même. Les définir manuellement provoque au contraire des échecs.
Si DHCP et WDS sont sur des machines différentes :
# 66 = adresse du serveur de boot
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 -OptionId 66 -Value "192.168.10.10"
# 67 = fichier de démarrage (BIOS hérité)
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 -OptionId 67 -Value "boot\x64\wdsnbp.com"
BIOS hérité ou UEFI : le fichier de boot change
C'est un piège fréquent avec Windows 11, qui impose l'UEFI. Le fichier de démarrage n'est pas le même :
- BIOS hérité →
boot\x64\wdsnbp.com - UEFI x64 →
boot\x64\wdsmgfw.efi
Parc mixte : une seule option 67 ne peut pas servir les deux. Solutions : laisser WDS et DHCP sur le même serveur (il détecte l'architecture automatiquement), ou créer des stratégies DHCP filtrant sur la classe fournisseur
PXEClient.
Postes sur un autre sous-réseau : le relais IP
Le PXE fonctionne par diffusion (broadcast), qui ne traverse pas les routeurs. Si les postes sont sur un autre VLAN, configurer un IP Helper sur l'interface du routeur ou du commutateur :
! Exemple Cisco — sur l'interface du VLAN des postes
interface Vlan20
ip helper-address 192.168.10.10
Windows 11 : Secure Boot et TPM 2.0
Windows 11 exige TPM 2.0 et Secure Boot. En laboratoire, sur des machines virtuelles ou du matériel ancien, la séquence peut s'arrêter net. Contournement pour un environnement de test — étape Run Command Line placée avant l'installation du système :
cmd /c "reg add HKLM\SYSTEM\Setup\LabConfig /v BypassTPMCheck /t REG_DWORD /d 1 /f & reg add HKLM\SYSTEM\Setup\LabConfig /v BypassSecureBootCheck /t REG_DWORD /d 1 /f & exit /b 0"
En production : n'utilisez pas ce contournement. Activez plutôt TPM et Secure Boot dans le firmware des postes — c'est la configuration supportée par Microsoft.
07Créer et partager le Deployment Share
Dans Deployment Workbench :
- Clic droit sur Deployment Shares → New Deployment Share.
- Path :
C:\DeploymentShare. - Share name :
DeploymentShare$(le$masque le partage sur le réseau). - Laisser les options par défaut, terminer l'assistant.
MDT crée l'arborescence : Applications, Operating Systems, Out-of-Box Drivers, Packages, Task Sequences, etc.
08Configurer le partage et ses droits
Point crucial pour la suite : le compte utilisé par MDT doit pouvoir écrire sur le partage (pour y déposer les images capturées). On accorde le droit Change dès maintenant, ce qui évitera l'erreur de capture décrite en section 13.
# Vérifier le nom du partage
Get-SmbShare | Where-Object Name -like "*Deploy*"
# Accorder l'écriture (Change) au compte administrateur
Grant-SmbShareAccess -Name "DeploymentShare$" `
-AccountName "DEPLOY-SRV\Administrateur" `
-AccessRight Change -Force
# Vérifier
Get-SmbShareAccess -Name "DeploymentShare$"
Sécurité : restreindre l'accès à ce partage. Il contiendra des scripts et, plus tard, des mots de passe en clair dans les fichiers de configuration.
09Importer le système d'exploitation source
Avant de capturer une image personnalisée, MDT a besoin d'un Windows 11 « source » pour construire l'environnement. On importe le contenu de l'ISO Windows 11 Entreprise :
- Monter l'ISO Windows 11 (double-clic → une lettre de lecteur, ex.
D:). - Dans Workbench : clic droit sur Operating Systems → Import Operating System.
- Choisir Full set of source files.
- Source directory : la racine de l'ISO monté (
D:\). - Terminer. Les éditions de Windows 11 apparaissent dans la liste.
10Injecter les pilotes matériels
Sans pilotes, un poste déployé démarre sans réseau, sans son, parfois avec un écran en basse résolution. Pire : si le pilote de stockage manque, WinPE ne voit aucun disque et le déploiement s'arrête. MDT gère cela avec le nœud Out-of-Box Drivers.
Organiser les pilotes par modèle
L'erreur classique est de tout déverser en vrac : MDT injecte alors des pilotes incompatibles. On crée une arborescence par constructeur et modèle.
Dans Workbench, clic droit sur Out-of-Box Drivers → New Folder, par exemple :
Out-of-Box Drivers
├── WinPE
│ └── x64
├── Dell
│ ├── OptiPlex 7010
│ └── Latitude 5540
└── HP
└── EliteDesk 800 G9
Puis clic droit sur un dossier → Import Drivers → pointer sur le dossier des pilotes extraits (fichiers .inf, jamais des .exe).
Récupérer les pilotes chez le constructeur
Dell fournit ses Driver Packs pour MDT/SCCM, HP ses Driver Packs, Lenovo ses SCCM Packages. Ce sont des archives d'.inf prêtes à importer.
Pilotes pour WinPE
WinPE a ses propres besoins : essentiellement réseau et stockage. Sans eux, l'environnement de démarrage ne voit ni le partage ni le disque.
Importer ces pilotes dans WinPE\x64, puis créer un Selection Profile qui ne contient que ce dossier : Workbench → Advanced Configuration → Selection Profiles → New → cocher uniquement Out-of-Box Drivers\WinPE\x64.
Puis dans les propriétés du Deployment Share, onglet Windows PE → Drivers and Patches → sélectionner ce profil. Régénérer ensuite le partage.
Injecter le bon pilote selon le modèle
Dans la séquence de déploiement, à l'étape Inject Drivers, on peut choisir un profil par modèle. La méthode élégante consiste à laisser MDT détecter le modèle via CustomSettings.ini :
[Settings]
Priority=Model,Default
[OptiPlex 7010]
DriverSelectionProfile=Dell-OptiPlex-7010
[EliteDesk 800 G9]
DriverSelectionProfile=HP-EliteDesk-800
[Default]
DriverSelectionProfile=Nothing
DriverInjectionMode=ALL
MDT lit le modèle dans le BIOS et applique automatiquement le bon jeu de pilotes.
Vérifier après déploiement : ouvrir le Gestionnaire de périphériques. Aucun point d'exclamation jaune ne doit subsister.
11Ajouter et déployer les applications
Plutôt que de figer toutes les applications dans l'image de référence, MDT permet de les installer pendant le déploiement. L'image reste légère et les applications se mettent à jour indépendamment.
Importer une application
Clic droit sur Applications → New Application → Application with source files. Indiquer le dossier contenant l'installeur, puis la ligne de commande silencieuse.
Les commandes silencieuses courantes
C'est le point technique : une application qui ouvre une fenêtre bloque tout le déploiement.
# MSI — silencieux, sans redémarrage
msiexec /i "application.msi" /qn /norestart
# Google Chrome (MSI Entreprise)
msiexec /i "GoogleChromeStandaloneEnterprise64.msi" /qn /norestart
# Adobe Acrobat Reader
setup.exe /sAll /rs /msi EULA_ACCEPT=YES
# 7-Zip
msiexec /i "7z-x64.msi" /qn /norestart
# Notepad++
npp.Installer.x64.exe /S
# Installeur InnoSetup
setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART
# Installeur NSIS
setup.exe /S
Trouver le bon commutateur : essayer
setup.exe /?, consulter la documentation de l'éditeur, ou repérer le moteur d'installation (MSI, InnoSetup, NSIS) qui détermine la syntaxe.
Rattacher les applications à la séquence
Deux méthodes :
- Étape dédiée — dans la séquence, groupe State Restore, ajouter Install Application → Install a single application → choisir l'application. Une étape par logiciel, l'ordre est maîtrisé.
- Par les règles — plus souple, on liste les applications dans
CustomSettings.inivia leur GUID :
[Default]
Applications001={a1b2c3d4-0000-0000-0000-000000000001}
Applications002={a1b2c3d4-0000-0000-0000-000000000002}
Applications003={a1b2c3d4-0000-0000-0000-000000000003}
Le GUID se lit dans les propriétés de chaque application, onglet General.
Gérer les dépendances et les redémarrages
Onglet Dependencies d'une application : y déclarer ce qui doit être installé avant (par exemple .NET ou Visual C++ Redistributable). MDT respectera l'ordre.
Si un logiciel impose un redémarrage, cocher Reboot the computer after installing this application — la séquence reprendra automatiquement après le redémarrage.
Toujours tester une application isolément avant de l'ajouter au parc : lancer sa commande silencieuse à la main sur un poste, vérifier qu'elle s'installe sans fenêtre et retourne le code 0.
12Préparer la machine de référence
La machine de référence est le modèle : on y installe Windows 11 Entreprise, puis on la personnalise (navigateur, lecteur PDF, suite bureautique, réglages, mises à jour). On ne la joint pas à un domaine — l'image doit rester générique.
Recommandation pro : utiliser une machine virtuelle comme référence. Chaque capture lance un
sysprep /generalizeirréversible (comptes désactivés, SID régénéré, compteur « rearm » limité à 3). Sur une VM, un snapshot avant capture permet de recommencer autant de fois que nécessaire. Sur une machine physique, prévoir un clone de restauration.
13Créer la séquence de capture
Dans Workbench : clic droit sur Task Sequences → New Task Sequence.
- Task sequence ID :
CAPTURE— Name : « Sysprep and Capture ». - Template : Sysprep and Capture.
- Select OS : l'édition Windows 11 Entreprise importée en section 8.
- Clé produit : « Do not specify… ». Mot de passe admin : au choix.
- Terminer.
14Générer le média de boot et configurer WDS
MDT doit générer l'environnement WinPE qui démarrera les machines. Clic droit sur le Deployment Share → Update Deployment Share → au premier passage, choisir l'option qui régénère complètement les images de boot.
Le processus produit, dans C:\DeploymentShare\Boot :
LiteTouchPE_x64.wim— image de boot pour le réseau (WDS/PXE)LiteTouchPE_x64.iso— image pour créer une clé USB bootable
Ajouter l'image de boot dans WDS
Console Windows Deployment Services → Boot Images → clic droit → Add Boot Image → sélectionner C:\DeploymentShare\Boot\LiteTouchPE_x64.wim. Les postes démarrant en PXE recevront désormais cet environnement.
15Lancer la capture
Sur la machine de référence prête, exécuter :
\\192.168.10.10\DeploymentShare$\Scripts\LiteTouch.vbs
Sélectionner la séquence « Sysprep and Capture », indiquer où enregistrer l'image, et lancer. MDT généralise la machine, redémarre en WinPE, puis crée le .wim dans le dossier Captures.
Si l'écran final affiche Success, l'image est prête (section 14). Mais très souvent, la première capture échoue avec une erreur précise — voyons comment la résoudre.
16Résoudre l'erreur 0x80004005 à la capture
Le symptôme
Error creating an image of drive C:, rc = 5
ZTI ERROR - Non-zero return code by ZTIBackup, rc = 5
Litetouch deployment failed, Return Code = -2147467259 0x80004005
Failed to run the action: Create WIM
Access is denied. (Error: 00000005; Source: Windows)
Interpréter le code
rc = 5 = erreur Windows n°5, « Access is denied ». L'action Create WIM (via ZTIBackup) n'arrive pas à écrire l'image dans Captures. Ce n'est ni le disque, ni Sysprep : c'est un problème de droits d'écriture.
Diagnostic depuis WinPE
Sur la machine de référence démarrée en WinPE, tester lecture puis écriture :
net use Z: \\192.168.10.10\DeploymentShare$ /user:DEPLOY-SRV\Administrateur MotDePasse
dir Z:\Captures # lecture : OK
echo test > Z:\Captures\test.txt # écriture : "Accès refusé"
La lecture marche, l'écriture est refusée.
La cause racine : NTFS ≠ SMB
Les droits NTFS (dossier local) et SMB (partage réseau) sont distincts ; le plus restrictif l'emporte. Un dossier peut être en « contrôle total » NTFS mais dont le partage n'accorde que la lecture. Or ZTIBackup écrit via le réseau.
Get-SmbShareAccess -Name "DeploymentShare$"
AccountName AccessControlType AccessRight
----------- ----------------- -----------
Tout le monde Allow Read
La correction
Si l'on n'a pas déjà accordé le droit Change en section 7 :
Grant-SmbShareAccess -Name "DeploymentShare$" `
-AccountName "DEPLOY-SRV\Administrateur" -AccessRight Change -Force
Revalider : refaire echo test > Z:\Captures\test.txt depuis WinPE → doit réussir. Relancer LiteTouch.vbs : la capture va jusqu'au bout et produit le .wim (15–25 Go typiquement).
À retenir : face à un
rc = 5surCreate WIM, vérifier d'abord les droits SMB du partage, pas seulement le NTFS.
17Importer l'image capturée dans MDT
Clic droit sur Operating Systems → Import Operating System → Custom image file → pointer sur le .wim capturé → terminer. L'image apparaît (« Windows IBS image ») ; un import réussi confirme aussi qu'elle n'est pas corrompue.
18Créer la séquence de déploiement
Clic droit sur Task Sequences → New Task Sequence : ID W11DEPLOY, modèle Standard Client Task Sequence. À l'étape Select OS, choisir l'image capturée — surtout pas une édition d'origine. Clé produit : « Do not specify ».
19Partitionnement UEFI et disque cible
Windows 11 s'installe en UEFI/GPT. Or le modèle Standard Client Task Sequence contient deux étapes de partitionnement, et c'est la version BIOS qui est parfois active par défaut — d'où des échecs peu explicites.
Vérifier la bonne étape
Ouvrir la séquence W11DEPLOY → groupe Preinstall → New Computer only. Deux étapes coexistent :
- Format and Partition Disk (BIOS/MBR)
- Format and Partition Disk (UEFI) (GPT)
Chacune porte une condition sur la variable IsUEFI, visible dans l'onglet Options. Vérifier que la condition UEFI est bien IsUEFI equals TRUE et l'autre IsUEFI equals FALSE.
Structure de partitions attendue en UEFI
1. EFI System Partition (ESP) — 500 Mo, FAT32
2. MSR (Microsoft Reserved) — 128 Mo
3. Windows (OSDisk) — 100 % de l'espace restant, NTFS
Choisir le bon disque
Sur un poste avec plusieurs disques, MDT vise Disk 0 par défaut — pas toujours le bon. Pour cibler explicitement le disque système :
[Default]
OSDDiskIndex=0
OSDPartitions=1
OSDPartitions0Bootable=TRUE
OSDPartitions0FileSystem=NTFS
Prudence : le partitionnement efface le disque. Sur un poste en service, vérifier deux fois l'index du disque et sauvegarder les données au préalable.
20Automatiser avec CustomSettings.ini et Bootstrap.ini
Clic droit sur le Deployment Share → Properties → onglet Rules.
CustomSettings.ini
[Default]
OSInstall=Y
TaskSequenceID=W11DEPLOY
; Nommage automatique par numéro de série
OSDComputerName=PC-#Right("%SerialNumber%",8)#
JoinWorkgroup=WORKGROUP
UILanguage=fr-FR
KeyboardLocale=040c:0000040c
; Sauter les écrans (quasi zéro-touch)
SkipTaskSequence=YES
SkipComputerName=YES
SkipDomainMembership=YES
SkipAdminPassword=YES
SkipSummary=YES
SkipFinalSummary=YES
FinishAction=REBOOT
Bootstrap.ini (bouton « Edit Bootstrap.ini »)
[Default]
DeployRoot=\\192.168.10.10\DeploymentShare$
UserID=Administrateur
UserDomain=DEPLOY-SRV
UserPassword=MotDePasse
SkipBDDWelcome=YES
Important : toute modif de
Bootstrap.iniimpose un nouvel Update Deployment Share (il est intégré à l'image de boot). Les mots de passe sont en clair : protéger l'accès au partage.
21Variante : joindre automatiquement le domaine
Le guide utilise JoinWorkgroup, adapté à un parc autonome. En entreprise, les postes rejoignent en général un domaine Active Directory. Il suffit de remplacer cette ligne dans CustomSettings.ini :
[Default]
; Remplace JoinWorkgroup=WORKGROUP
JoinDomain=monentreprise.local
DomainAdmin=svc_mdt_join
DomainAdminDomain=monentreprise.local
DomainAdminPassword=MotDePasse
; Unité d'organisation de destination
MachineObjectOU=OU=Postes,OU=Parc,DC=monentreprise,DC=local
Utiliser un compte de service dédié
Ne jamais mettre un compte administrateur du domaine dans ce fichier. Créer un compte de service dont le seul droit est de joindre des machines à l'unité d'organisation visée :
New-ADUser -Name "svc_mdt_join" -AccountPassword (Read-Host -AsSecureString) `
-Enabled $true -PasswordNeverExpires $true `
-Description "Compte de service — jonction de domaine MDT"
Puis déléguer sur l'unité d'organisation, via Utilisateurs et ordinateurs Active Directory → clic droit sur l'OU → Délégation de contrôle → autoriser la création et la suppression d'objets ordinateur.
Rappel de sécurité : le mot de passe reste en clair dans
CustomSettings.ini. Restreindre l'accès au partage aux seuls administrateurs, et limiter au maximum les droits du compte de service.
22Gérer les comptes locaux
Objectif fréquent : désactiver l'Administrateur intégré et créer un compte d'usage administrateur.
Le piège : désactiver l'Administrateur pendant que la séquence tourne sous ce compte la fait se couper l'accès → échec de toute la séquence. Solution : deux étapes séparées, désactivation en dernier, étapes non bloquantes.
Étape 1 Créer le compte (Run Command Line, « Continue on error » coché) :
cmd /c "net user monadmin MotDePasse /add & net localgroup Administrateurs monadmin /add & net localgroup Administrators monadmin /add & exit /b 0"
Étape 2 Désactiver l'Administrateur (dernière étape, « Continue on error ») :
cmd /c "net user Administrateur /active:no & net user Administrator /active:no & exit /b 0"
exit /b 0 force un code de sortie nul ; doubler les noms FR/EN rend la commande indépendante de la langue de Windows.
23Raccourcis bureau et navigateur par défaut
Créés sur le bureau public (C:\Users\Public\Desktop), ils sont visibles par tous les utilisateurs du poste. Étape Run PowerShell Script :
$Bureau = "$env:PUBLIC\Desktop"
$W = New-Object -ComObject WScript.Shell
# Raccourci application
$lnk = $W.CreateShortcut("$Bureau\Word.lnk")
$lnk.TargetPath = "$env:ProgramFiles\Microsoft Office\root\Office16\WINWORD.EXE"
$lnk.Save()
# Raccourci web
@("[InternetShortcut]","URL=https://intranet.exemple.local") |
Set-Content "$Bureau\Intranet.url" -Encoding ASCII
# Dossier de liens applicatifs
$d = "$Bureau\Liens applicatifs"; New-Item -ItemType Directory $d -Force | Out-Null
@("[InternetShortcut]","URL=https://app.exemple.local") |
Set-Content "$d\Application métier.url" -Encoding ASCII
# Chrome navigateur par défaut (nouveaux profils)
dism.exe /Online /Import-DefaultAppAssociations:"C:\Windows\System32\DefaultApps.xml"
Navigateur par défaut : sous Windows 11, la méthode fiable en déploiement est
DISM /Import-DefaultAppAssociations, qui applique les associations à tous les nouveaux profils — exactement le cas après un déploiement.
24Inventaire automatique du parc
Une étape PowerShell collecte les caractéristiques de chaque poste déployé et les ajoute à un CSV central — un inventaire matériel généré sans aucune saisie manuelle.
$csv = "\\192.168.10.10\DeploymentShare$\Logs\Inventaire.csv"
$cs = Get-CimInstance Win32_ComputerSystem
$bios = Get-CimInstance Win32_BIOS
$os = Get-CimInstance Win32_OperatingSystem
$ram = [math]::Round((Get-CimInstance Win32_PhysicalMemory |
Measure-Object Capacity -Sum).Sum / 1GB, 0)
[PSCustomObject]@{
Poste = $env:COMPUTERNAME
NumeroSerie = $bios.SerialNumber
Modele = $cs.Model
RAM_Go = $ram
Windows = $os.Caption
Installe_le = $os.InstallDate
} | Export-Csv $csv -NoTypeInformation -Encoding UTF8 -Delimiter ";" -Append
Le fichier s'ouvre directement dans Excel (séparateur ;) : une ligne par poste.
25Déployer les postes et optimiser le multi-postes
Régénérer après chaque modification
Après toute modif (règles, scripts, séquences), clic droit sur le Deployment Share → Update Deployment Share.
Démarrer les postes
PXE (recommandé) : démarrer le poste en boot réseau ; grâce à WDS + CustomSettings.ini, la séquence se lance seule. USB : écrire LiteTouchPE_x64.iso sur une clé et booter dessus.
Toujours valider sur un poste d'abord : bonne image, nom attendu, comptes conformes, applications/raccourcis présents, inventaire renseigné. Ensuite seulement, enchaîner le parc.
Optimiser le déploiement simultané
Déployer plusieurs postes en même temps peut ralentir : tous tirent le même .wim. Diagnostiquer le goulot :
Get-Counter '\PhysicalDisk(_Total)\% Disk Time' -Continuous
Get-Counter '\Network Interface(*)\Bytes Total/sec' -Continuous
- Disque serveur saturé (HDD) → passer le share sur SSD/NVMe : le gain le plus net.
- Réseau plafonné (1 Gbit/s partagé) → 10 Gbit ou agrégation de ports.
- Multicast WDS → un seul flux diffusé à toutes les machines : idéal pour un déploiement de masse.
- À défaut, déployer par vagues de 2–3 postes.
26Journaux, supervision et dépannage
Un déploiement qui échoue laisse toujours une trace. Savoir où regarder fait gagner des heures.
Où trouver les journaux
- Pendant le déploiement (WinPE) :
X:\MININT\SMSOSD\OSDLOGS - Après installation, avant la fin :
C:\MININT\SMSOSD\OSDLOGS - Une fois terminé :
C:\Windows\Temp\DeploymentLogs
Les fichiers à ouvrir en priorité : BDD.log (journal consolidé de MDT) et SMSTS.log (exécution de la séquence).
Centraliser les journaux sur le serveur
Beaucoup plus pratique que d'aller les chercher sur chaque poste :
[Default]
SLShare=\\192.168.10.10\DeploymentShare$\Logs
SLShareDynamicLogging=\\192.168.10.10\DeploymentShare$\Logs\%OSDComputerName%
Chaque poste dépose alors ses journaux dans son propre dossier, y compris en cas d'échec.
Activer la supervision en temps réel
Propriétés du Deployment Share → onglet Monitoring → cocher Enable monitoring for this deployment share. Le nœud Monitoring de Workbench affiche alors l'avancement de chaque poste : étape en cours, pourcentage, erreurs.
# Suivi en ligne de commande
Get-MDTMonitorData -Path "DS001:"
Lire un journal efficacement
Utiliser CMTrace (fourni avec l'ADK ou SCCM) plutôt que le Bloc-notes : il colore les erreurs en rouge et suit le fichier en direct. Rechercher les mots-clés Failed, Error, rc = et remonter à la première occurrence — les suivantes n'en sont souvent que la conséquence.
Les pannes les plus fréquentes
- Pas de démarrage PXE → pare-feu, options 66/67, ou fichier de boot UEFI/BIOS inadapté.
- « Windows could not parse or process the unattend answer file » →
CustomSettings.inimal formé, souvent un caractère accentué ou un guillemet typographique. - Aucun disque détecté → pilote de stockage manquant dans WinPE.
- Échec après le premier redémarrage → pilote réseau manquant : le poste ne retrouve plus le partage.
- Application non installée → commande silencieuse incorrecte ; tester la commande à la main.
- Accès refusé → droits SMB du partage (voir la section dédiée à l'erreur 0x80004005).
27Sauvegarder l'infrastructure
Un incident peut compromettre des heures de travail. On sauvegarde régulièrement, dans un dossier horodaté puis sur support externe : la config MDT et l'image, le DHCP, le WDS, et une procédure de restauration.
$Dest = "C:\Backup-Serveur\Backup_$(Get-Date -Format yyyy-MM-dd_HHmm)"
robocopy "C:\DeploymentShare\Control" "$Dest\MDT\Control" /E /R:2 /W:2
robocopy "C:\DeploymentShare\Scripts" "$Dest\MDT\Scripts" /E /R:2 /W:2
robocopy "C:\DeploymentShare\Captures" "$Dest\MDT\Captures" /E /R:2 /W:2
Export-DhcpServer -File "$Dest\DHCP\dhcp-export.xml" -Leases -Force
Bon à savoir : dans la console MDT, « Remove Deployment Share » retire souvent seulement l'entrée de la console, sans supprimer les fichiers. Vérifier
Test-Path C:\DeploymentShareavant de paniquer : un simple Open Deployment Share restaure alors toute la configuration.
28Bilan du projet
En partant d'un serveur nu, ce projet met en place une chaîne de déploiement complète et automatisée : installation des services (ADK, MDT, WDS, DHCP), image de référence capturée, déploiement quasi zéro-touch avec nommage automatique, comptes standardisés, applications et raccourcis préconfigurés, inventaire du parc généré automatiquement, et infrastructure sauvegardée.
Le point le plus délicat — l'erreur 0x80004005 à la capture — se résout en comprenant la distinction entre droits NTFS et droits SMB. Ce cap franchi, le déploiement devient une mécanique fiable, reproductible et industrialisable, transformant plusieurs jours de travail manuel en un processus automatisé de bout en bout.
Compétences & technologies mises en œuvre
Ce projet illustre mon travail au quotidien
Automatisation d'infrastructure, déploiement de parc, scripting PowerShell et résolution de problèmes concrets : ce type de réalisation résume mon approche de l'administration système.