Configuration avancée de MDT 2013

Sommaire

I. Présentation

Pour faire suite au tutoriel précédent sur vos débuts avec MDT 2013, je vous propose d'entrer un peu plus dans les détails de la configuration associée à cette solution de déploiement très flexible. Le but recherché étant de réduire au maximum les actions lors de l'installation.

Je ne vais pas dresser l'apologie de MDT, mais je suis intimement convaincu que derrière cet air de complexité, se cache un outil aux capacités presque sans limites et vos efforts pour l'appréhender seront certainement récompensés rapidement. Je reconnais que les premiers contacts avec MDT peuvent être déconcertants et on peut être découragé certains d'entre vous, mais je vous conseille de persévérer, car la communauté est toujours plus active, de jour en jour. En ce qui me concerne, depuis de nombreuses années, j'ai relégué le clonage et la multiplication des masters à de vieux souvenirs. Et avec MDT, cette époque est bien révolue, et je suis persuadé que vous n'aurez surtout plus l'envie d'y revenir…

Ce tutoriel a donc pour but de vous expliquer des concepts avancés afin de comprendre et maitriser la configuration des fichiers CustomSetting.ini et bootstrap.ini et introduire une éventuelle extension vers la base de données. Je reconnais que le sujet est plutôt vaste et qu'il existe d'autres angles d'approche, plus synthétiques, comme par exemple cet article ou un article TRÈS pointu comme  celui-ci

Le plus délicat pour moi était donc de choisir la position du curseur de complexité que je souhaitais vous présenter. La marche de progression est peut-être un peu haute et veuillez donc m'excuser par avance pour ces choix arbitraires. J'espère que chaque lecteur y trouvera son compte, et à défaut de réponse, des pistes pour avancer dans ces investigations ou l'apprentissage de MDT.

II. Un peu de théorie

Une fois de plus, avant d'aborder le vif du sujet, il convient d'insister sur quelques points importants des mécanismes MDT. Précédemment, vous avez constaté que le MDT utilise de nombreux scripts vbs, wsh et fichiers .xml afin de gérer les différents cas de figure possibles, mais rassurez-vous, il ne s'agit surtout pas d'aller modifier ces fichiers. Même les spécialistes ne s'y aventurent que rarement, en dernier recours, et je vous assure qu'il y a une grosse marge de manœuvre avant d'en arriver là.

A. Les variables ou propriétés

Ce qu'il faut en premier lieu comprendre, c'est que les différents scénarios MDT réagissent en fonction de "variables", dont certaines sont positionnées dynamiquement selon l'environnement détecté et d'autres, plutôt destinés, à modifier le comportement par défaut des séquences de taches. On parle aussi de "propriétés" pour désigner ces variables. Ne vous offusquez pas, mais pour ma part, j'ai pris l'habitude de parler de "directive" pour désigner une variable, ou une propriété ET sa valeur.

Nous verrons qu'il est également possible de déclarer des propriétés personnalisées et/ou des valeurs dynamiquement calculées.

Vous trouverez une description sur chacune de ces variables en sollicitant l'aide intégrée à la console MDT via [F1] ou la documentation "Toolkit Reference.docx" associée au téléchargement de MDT. Accrochez-vous, le document frise les 500 pages !...

Si vous n'êtes pas persuadé de cette richesse, je vous invite à utiliser l'outil fournit ici par l'équipe Microsoft "deploymentguys",  comme ceci :

.\DeclareProperties.ps1 -deploymentshare C:\DeploymentShare -inifile C:\DeploymentShare\Control\CustomSettings.ini -ztigatherfile C:\DeploymentShare\Scripts\ZTIGather.xml -outputFile MDTVariables.txt

On obtient un fichier d'un peu plus de 1000 lignes, soit un potentiel équivalent de variables. Je ne vais donc pas en dresser une liste exhaustive, mais plutôt essayer d'aller à l'essentiel.

Ces variables et leurs valeurs sont positionnées et exploitées durant les différentes phases et tout au long des traitements de scénarios MDT. Elles sont donc présentes en mémoire, mais également stockées dans le fichier "%SYSTEMDRIVE%\MININT\SMSOSD\OSDLOGS\VARIABLES.DAT" afin de survivre aux redémarrages. A des fins de débogage, sachez que contrairement aux apparences, ce fichier est de format "xml". La lecture est un peu rude, mais reste tout à fait compréhensible sous réserve d'utiliser un éditeur adapté ou Internet Explorer:

<?xml version="1.0"?>
<MediaVarList Version="4.00.5345.0000">
<var name="LOGPATH">
 <![CDATA[D:\MININT\SMSOSD\OSDLOGS]]>
</var><var name="DEBUG">
 <![CDATA[FALSE]]>
</var><var name="SMSTSLOCALDATADRIVE">
 <![CDATA[D:]]>
</var>

B. Valorisation et traitement

Dans les grandes lignes, on peut considérer que les variables MDT sont valorisées successivement :

  • durant la phase de collecte (exécution du script "ZTIGather.wsf") chargée de détecter l'environnement en fonction du contexte.
  • durant la lecture du fichier Bootstrap.ini
  • durant la lecture du fichier unattend.xml
  • durant la lecture du fichier CustomSettings.ini
  • durant le traitement de la base de données
  • durant l'exécution d'une séquence de tache

A des fins de tests ou d'investigations, il est possible d'évaluer les variables traités par le script de collecte via la commande suivante :

cscript ZTIGather.wsf /debug:TRUE /inifile:Settings.ini

Bien que marginal, ou pour le moins très ponctuel, sachez qu'il est également possible de stipuler des variables lors de l'exécution du script "Litetouch.vbs".

Par exemple:

\\WDS-MDT\DeploymentShare$\Scripts\Litetouch.vbs /DeploymentType:REFRESH /SkipDeploymentType:YES /OSDComputerName:PC0001

Ou pour accéder directement à une séquence de tache particulière :

\\WDS-MDT\DeploymentShare$\Scripts\Litetouch.vbs /TasksequenceID:IdentifiantDeLaTache

Sachez qu'il est aussi possible d'exploiter plusieurs configurations, ou variantes de CustomSettings.ini

  • Via le script d'initialisation, soit "LiteTouch.vbs /RulesFile:"\\CheminDuCS.ini"
  • Au sein d'une séquence de taches, au niveau de "Gather local only"

Les possibilités sont tellement vastes, que la tâche la plus compliqué est de choisir la technique qui vous convient le mieux parmi toutes celles que le MDT peut proposer.

En fait, pour les cas le plus courants, la configuration de MDT passe essentiellement par les fichiers "bootstrap.ini" et "CustomSetting.ini" présents par défaut dans le dossier "\Control" de la structure MDT. Nous allons voir que ces fichiers de configuration, (Rules Files) sont composés de sections destinées à gérer des plusieurs déclinaisons de traitement.

MDT03-img01
Traitement du Bootstrap.ini

Traitement du CustomSetting.ini :

MDT03-img02

La manipulation de ces fichiers est assez aisée au début, mais cette approche montre rapidement ses limites lorsque le nombre de déclinaison augmente. C'est pour cette raison que MDT propose d'associer une base de données de type SQL Server. Ce complément facultatif, permet d'étendre les possibilités de MDT et affiner les différents scénarios. L'une des premiers intérêts est d'associer des noms de machine en fonction d'un identifiant unique tel que l'adresse MAC. Cette information étant généralement connue des bases d'inventaire de l'entreprise.

Moins évident, mais néanmoins très intéressant, le MDT exploite une notion de "rôles" basé sur des requêtes sur les différentes tables de la base de données. Bien que ce soit un peu délicat à maitriser au début, ce concept permet "grossièrement" de gérer des "configurations typiques", déployées selon des critères tels que le site (réseau), l'usage de la machine, un ensemble d'application…

Note : Ne confondez la notion de "rôles" associée à la gestion des fonctionnalités d'un serveur "OSRoles", avec celle mentionnée au sein de la base de données, qui ont une connotation "d'ensembles de configuration" , ou d'une gestion en "paquets".

Si vous ne disposez pas d'un serveur MS SQL dans votre environnement, vous pouvez vous contenter d'une version SQL Server Express, qui fera parfaitement l'affaire. Je ne suis pas un spécialiste du sujet, mais je pense que vous mettrez un certain temps avant de saturer cette base de données avec MDT.

III. Étude des fichiers de configuration Bootstrap.ini et CustomSetting.ini

Comme mentionné dans le tutoriel précédent, "Débuter avec MDT 2013", le fichier "CustomSetting.ini" peut être édité directement au sein de la console MDT, via les propriétés de votre partage de dépliement sous l'onglet "Rules".

MDT03-img03

A votre convenance, vous pouvez également éditer ce fichier via un autre éditeur de texte tel que le bloc-notes ou Notepad++.

En revanche, pour le fichier Bootstrap.ini la console MDT ne propose pas d'édition intégrée, mais un bouton MDT03-img04 qui aura pour effet de l'éditer avec  le bloc-notes.

Note : Certaines variables ou directives peuvent être mentionnées dans le fichier de primo-configuration "BootStrap.ini". Reportez-vous à la documentation officielle "Toolkit Reference.docx" pour plus de détail. Je vous conseille toutefois de limiter les modifications de ce fichier qui, contrairement au "CustomSetting.ini", nécessite une régénération des clients LiteTouch.

A. Le CustomSetting.ini par défaut

Commençons déjà par analyser le contenu par défaut. Au début, ce fichier est composé de simplement 2 sections [Settings] et [Default], mais nous allons voir que ce nombre peut rapidement augmenter.

DirectiveExplications
[Settings]Section obligatoire chargée de définir le traitement global du fichier de configuration. Elle stipule essentiellement dans quel ordre les autres sections vont être traitées et donc la priorité des variables qui seront appliquées.
Priority=DefaultDéfini l'ordre de traitement des différentes sections utilisées pour positionner les valeurs des variables. Les noms doivent être séparés par des virgules et sont traités du premier au dernier. En cas de conflit, c'est donc le dernier qui prime.
Properties=MyCustomPropertyCette entrée permet de déclarer des propriétés supplémentaires. Réservé à des usages avancés, abordés ci-après,  cette directive sert à définir des variables personnalisées qui ne seraient pas déjà prises en charge par MDT. (cf  ZTIGather.xml ).
[Default]Section obligatoire qui permet de définir les valeurs qui seront appliquées par défaut à tous les ordinateurs.
OSInstall=YCette directive indique que l'ordinateur est censé effectuer un déploiement du système d'exploitation
SkipCapture=YESCette directive permet de masquer l'écran de capture dans l'assistant wizard.hta. Nous reviendrons plus tard sur l'intérêt de cette variable
SkipAdminPassword=YESCette directive permet de masquer l'écran de saisie d'un mot de passe pour l'administrateur local. L'éventuel mot de passe contenu dans l'image de référence restera alors inchangé.
SkipProductKey=YESCette directive permet de masquer l'écran de saisie de la clé produit qui peut être stockée dans le fichier de réponse correspondant (unattend.xml). Toutefois, en fonction du système d'exploitation installé, et afin d'éviter l'interruption d'une installation, vous pouvez indiquer dans ce fichier, une clé par défaut. Cf "Annexe - Clés d’installation des clients KMS"
SkipComputerBackup=YESCette directive, apparue avec MDT2012, permet de masquer l'écran de sauvegarde préalable à un déploiement sur un poste fonctionnel.
SkipBitLocker=YESCette directive permet de masquer l'écran de mise en œuvre du chiffrement intégral de disque dur "BitLocker". Attention, si vous l'activez la version du système d'exploitation doit le supporter.

Normalement, les directives ne sont pas sensibles à la casse (majuscules/minuscules) et les valeurs comme "Y", "YES", "Yes" sont valides. Toutefois, probablement pour des raisons historiques et par convention, il est souhaitable de respecter les préconisations proposées dans l'aide en ligne, c’est-à-dire "YES" ou "NO".

Astuce : Vous pouvez ajouter un point-virgule en début d'une ligne pour la commenter et ainsi éviter son traitement ou mentionner une information personnelle.

Si je résume, la section [Default] doit contenir vos préférences générales, s'appliquant au plus grand nombre de vos scénarios de déploiement, et pour lesquels vous souhaitez contrôler les valeurs par défaut.

Ensuite, vous pouvez ajouter des sections supplémentaires pour traiter les cas particuliers sans oublier de mentionner l'ordre au niveau de la directive "Priority =".

B. Le Bootstrap.ini par défaut

Ce fichier est en quelque sorte le premier point d'entrée dans la configuration de MDT. Il contient donc les informations cruciales de l'initialisation des processus MDT. Pour votre gouverne, son initialisation est déclenchée par la commande "BDDRun.exe /Bootstrap" contenue dans le noyau des clients LiteTouch. Reportez-vous à mon tutoriel sur la "Présentation de WinPE" et les explications sur les processus d'initialisation.

Il partage la même logique que son homologue de type .ini et à l'issue d'une première installation de MDT, son contenu est le suivant:

DirectiveExplications
[Settings]Même principe que CustomSetting.ini
Priority=DefaultMême principe que CustomSetting.ini
[Default]Section obligatoire qui permet de définir les valeurs qui seront appliquées par défaut à tous les ordinateurs.
DeployRoot=\\WDS-MDT\DeploymentShare$Cette directive indique l'emplacement  racine du partage de déploiement MDT, généralement sous la forme d'un chemin UNC.

Nous allons voir par la suite comment l'améliorer.

C. Principes avancés des fichiers .INI

1. Explications

Le traitement des fichiers .INI est bien plus complexe qu'il n'y parait. En effet, il possible de personnaliser à l'extrême son séquencement. On retrouve toujours une section [Settings] chargée de définir les sections et l'ordre de leur traitement, mais parfois également des propriétés personnalisées. Au sein de ces sections, on trouve généralement les directives préconisées dans la plupart des cas, mais également vos propriétés personnalisées, auxquelles peuvent être associées des valeurs simples ou calculées. De plus, il est possible d'ajouter des sous-sections qui seront traitées en fonction d'une autre valeur.

[Settings]
; ordre de lecture des sections
Priority=Section1, Section2, Section3...
; propriétés personnalisées
Properties=CustStaticVar, CustDynamicVar

[Section1]
; valorisation avec un contenu statique
CustStaticVar=PC
; valorisation avec un contenu dynamique
CustDynamicVar=#Day(Date) & "-" & Month(Date) & "-" & Year(Date)#

[Section2]
; déclaration d'une sous-section avec nom fixe
SubSection=Section2-1

[Section2-1]
Result=Value

[Section3]
; déclaration d'une sous-section avec nom calculé
SubSection=Server-%IsServer%

[Server-True]
OSDComputerName=SRV-#Right("%SerialNumber%",7)#

Dans cet exemple "non fonctionnel", la variable personnalisée "CustDynamicVar" est valorisée selon une donnée calculée dynamiquement, telle que la date actuelle "#Day(Date)& "-" & Month(Date) & "-" & Year(Date)#". Les caractères dièse "#" servent à borner l'expression.

Note : Les expressions sont exprimées en code vbscript . Vous disposez donc de toute la panoplie des fonctions disponibles dans ce langage.

Pour le second exemple de valeur calculée, "OSDComputerName=" les signes "pourcent" référent une variable "%SerialNumber%", déjà positionnée lors de la collecte, en l'occurrence le numéro de série de la machine.
La sous-section déclarée dans la "Section3" est calculée sur la variable booléenne "%IsServer%" déjà positionnée lors de la collecte. S'il s'agit d'un système de type "Serveur", cette variable renvoie "True" ce qui permet de composer le nom de la sous-section à atteindre, soit "Server-True" dans cet exemple.

Pour illustrer ce principe avec un exemple plus concret :

Supposons que vous vouliez différencier des certains paramètres en fonction des chacun de vos sites et définir un nommage particulier selon que les ordinateurs soient de type portable ou de bureau. Pour un tel cahier des charges, le recours à la passerelle IP par défaut, soit la variable MDT "%DefaultGateway%", peut être un bon moyen pour localiser un emplacement ou un site. Pour ce qui est de la différentiation des types portable ou de bureau, il suffit d'interroger les variables booléennes MDT "%IsLapTop%" et "%IsDeskTop%".

Pour définir un nom unique d'ordinateur, vous avez plein de possibilités telles que :

  • Utiliser tout ou partie du numéro de série, - #Right("%SerialNumber%",7)#
  • Utiliser tout ou partie de l'adresse MAC - #Replace(Right(MACAddress,11),":","")#
  • Utiliser un nombre aléatoire. #Int(Rnd()*1000000)#

N'oubliez pas de respecter les règles de base NetBIOS, telles que la limitation à 15 caractères pour la compatibilité ascendante, et éviter les caractères spéciaux dont le soulignement.

Ce qui pourrait donner un fichier comme suit :

[Settings]
Priority=Init, ByLaptop, ByDesktop, DefaultGateway, Default
Properties=mySite, myPCType, myNumber

[Init]
 myNumber=#Replace(Right("%MACAddress%",11),":","")#

[ByLaptop]
 SubSection=Laptop-%IsLapTop%

[Laptop-True]
 myPCType=LT
 MachineObjectOU=OU=Portables,OU=Postes,DC=Cnf1g,DC=Local

[ByDesktop]
 SubSection=Desktop-%IsDesktop%

[Desktop-True]
 myPCType=DT
 MachineObjectOU=OU=Fixes,OU=Postes,DC=Cnf1g,DC=Local

[DefaultGateway]
 192.168.75.1=Paris
 192.168.44.1=Nantes
 192.168.35.1=Rennes
 192.168.100.1=Londres

[Paris]
 mySite=PAR
 TimeZoneName=Romance Standard Time

[Nantes]
 mySite=NTE
 TimeZoneName=Romance Standard Time

[Rennes]
 mySite=RNE
 TimeZoneName=Romance Standard Time

[Londres]
 mySite=LON
 TimeZoneName=GMT Standard Time

[Default]
 OSInstall=Y
 OSDComputername=%mySite%-%myPCType%-%myNumber%
 SkipCapture=YES
 SkipAdminPassword=YES
 SkipProductKey=YES
 SkipComputerBackup=YES
 SkipBitLocker=YES

2. Tests et débogage

Il ne vous reste plus qu'à tester cet exemple, mais la mise au point peut s'avérer longue et fastidieuse. Aussi, pour ces cas complexes, je vous conseille de tester la configuration sans passer par le scénario complet. Pour cela, téléchargez préalablement l'excellent outil "MDT Debugger" de l'équipe "The Deployment Guys". C'est un simple exécutable à déposer dans un dossier quelconque, tel que "\\WDS-MDT\DeploymentShare$\Tools". Ensuite, déposez le fichier de configuration à tester, que nous nommerons "CS-Complex.ini " dans le dossier "\\WDS-MDT\DeploymentShare$\Control". Ouvrez ensuite une invite de commande, puis exécutez les commandes suivantes :

cd C:\DeploymentShare\Tools

.\CUSTOM_MDTDebugger.exe cscript ..\scripts\ZTIGather.wsf /inifile:..\Control\CS-Complex.ini

La fenêtre suivante sera alors affichée, et vous permettra de contrôler précisément les traitements effectués ainsi que l'état des différentes variables et propriétés.

MDT03-img05

Si vous utilisez l'outil plusieurs fois de suite, pensez à supprimer le fichier suivant pour éviter les rémanences.

del C:\MININT\SMSOSD\OSDLOGS\VARIABLES.DAT

D. Les écrans de l'assistant

Pour cette étude, je vous propose d'aborder la configuration du MDT au travers des différents écrans affichés par l'assistant de déploiement "wizard.hta" exploité sur les clients LiteTouch. Pour l'exemple, nous prendrons un scénario courant d'une séquence de tache de déploiement "Standard Client Task Sequence".

Grossièrement, on peut considérer que les directives destinées à masquer les écrans de cet assistant sont de la forme "skip…=YES". A titre d'information, voici la liste de ces variables :

SkipAdminAccounts, SkipAdminPassword, SkipApplications, SkipBDDWelcome, SkipBitLocker, SkipBuild, SkipCapture, SkipComputerBackup, SkipComputerName, SkipDomainMembership, SkipFinalSummary, SkipGroupSubFolders, SkipLocaleSelection, SkipPackageDisplay, SkipProductKey, SkipRearm, SkipRoles, SkipSummary, SkipTaskSequence, SkipTimeZone, SkipUserData, SkipWizard

Toutefois, si vous décidez de passer un écran sans l'afficher, n'oubliez pas qu'il sera nécessaire de contrôler les variables associées ou accepter les valeurs par défaut.

Attention : Les écrans affichés sont variables selon les scénarios traités et certains peuvent être automatiquement masqués en l'absence de contenu, tels que des applications, des packages, ou lorsque certaines conditions ne sont pas remplies…

1. Page de bienvenue

Titre de l'écran de l'assistant : Welcome
Fichier de configuration préconisé : BootStrap.ini
Directive de masquage : SkipBDDWelcome=YES

MDT03-img06
Aperçu de la page de bienvenue

Propriétés concernées :

  • KeyboardLocalePE=040c:0000040c Modifier le clavier en Français

Pour affecter une adresse IP statique :

Bien que les environnements DHCP soit plus simples à mettre en œuvre, vous pouvez affecter une adresse IP statique sur les clients LiteTouch. Pour cela, vous pouvez soit laisser la page de bienvenue visible et utiliser l'assistant, soit utiliser des commandes "netsh", soit utiliser l'une des techniques suivantes :

- Ajout de tout ou partie des propriétés suivantes au sein du fichier de configuration BootStrap.ini

  • OSDAdapterCount=1
  • OSDAdapter0EnableDHCP=FALSE
  • OSDAdapter0IPAddressList=192.168.100.220
  • OSDAdapter0SubnetMask=255.255.255.0
  • OSDAdapter0Gateways=192.168.100.1
  • OSDAdapter0DNSServerList=192.168.1.11,192.168.1.12
  • OSDAdapter0DNSSuffix=labo.local

- Modifier le fichier "\unattend.xml" des clients LTI (modification du noyau WinPE) comme suit :

 <component name="Microsoft-Windows-TCPIP" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <Interfaces>
 <Interface wcm:action="add">
 <Ipv4Settings>
 <DhcpEnabled>false</DhcpEnabled>
 <Metric>10</Metric>
 <RouterDiscoveryEnabled>false</RouterDiscoveryEnabled>
 </Ipv4Settings>
 <UnicastIpAddresses>
 <IpAddress wcm:action="add" wcm:keyValue="1">192.168.100.220/24</IpAddress>
 </UnicastIpAddresses>
 <Identifier>Ethernet</Identifier>
 </Interface>
 </Interfaces>
 </component>

Cette seconde technique à ma préférence, mais j'admets qu'elle est plus délicate à mettre en œuvre. En effet, il faut être familier de l'éditeur WSIM à moins de copier/coller cet exemple et il faudra injecter cette modification au sein du noyau WinPE, dans le fichier Boot.WIM.

2. Saisie des identifiants de connexion

Titre de l'écran de l'assistant : User Credentials
Fichier de configuration : BootStrap.ini
Directive de masquage : N/A - Automatiquement passé si les propriétés ci-après sont toutes renseignées.

MDT03-img07
Aperçu de la page - Saisie des identifiants

Propriétés concernées :

  • UserID=CompteUtilisateur - Entrez le nom du compte de déploiement local ou de domaine
  • UserPassword =MotDePasse - Entrez le mot de passe du compte en clair
  • UserDomain=DomaineOuServeurMDT - Entrez le nom du domaine Active Directory ou le nom ou adresse IP du serveur MDT s'il s'agit d'un compte local.

3. Séquence(s) de taches

Titre de l'écran de l'assistant : Task Sequence
Fichier de configuration : Bootstrap.ini / CustomSettings.ini
Directive de masquage : SkipTaskSequence =YES

MDT03-img08
Aperçu de la page - Task Sequence

Propriétés concernées :

  • TaskSequenceID=Aucun - Entrez l'identifiant de la séquence de taches souhaitée. Vous pouvez retrouver cette information au niveau des propriétés d'une séquence de taches.

4. Détails de l'ordinateur

Titre de l'écran de l'assistant : Computer Details
Fichier de configuration : CustomSettings.ini
Directives de masquage : SkipComputerName =YES : SkipDomainMembership=YES

MDT03-img09
Aperçu de la page - Détails de l'ordinateur

Propriétés concernées :

  • OSDComputerName=NomMachine - Par défaut, MDT affecte un nom commençant par "MININT-" suivi d'un identifiant unique aléatoire.
  • JoinWorkgroup=NomDuGroupeDeTravail - Par défaut, MDT affecte le nom "WORKGROUP"

Ou pour joindre l'ordinateur à un domaine

  • JoinDomain=NomDuDomaine - Entrez le nom du domaine Active Directory à joindre
  • DomainAdmin=CompteDeJonction - Entrez le nom d'un compte habilité à joindre un ordinateur au domaine
  • DomainAdminDomain=NomDeDomaineDuCompte - Entrez le nom du domaine auquel appartient le compte habilité
  • DomainAdminPassword= MotDePasse - Entrez le mot de passe du compte en clair

5. Transfert des données et paramètres d'utilisateur (USMT)

Titre de l'écran de l'assistant : Move Data and Settings / User Data (Restore)
Fichier de configuration : CustomSettings.ini
Directive de masquage : SkipUserData =YES

MDT03-img10
Aperçu de la page - USMT

 

MDT03-img11

Propriétés concernées :

  • DoNotFormatAndPartition=YES - Ne formate pas les partitions existantes afin de préserver le contenu (Nouveauté MDT2013).
  • UDDir =Nom du dossier dans lequel seront stockées les données USMT ou la sauvegarde
  • UDShare = Chemin UNC dans lequel seront stockées les données USMT ou la sauvegarde
  • UserDataLocation = UNC | AUTO | NETWORK |NONE - Définit le chemin UNC ou la méthode de stockage des données USMT ou la sauvegarde - Par défaut, la valeur est "AUTO"

6. Saisie de la clé produit

Titre de l'écran de l'assistant : Product Key
Fichier de configuration : CustomSettings.ini
Directive de masquage : SkipProductKey =YES

MDT03-img12
Aperçu de la page - Spécifier la clé de produit

Propriétés concernées :

  • ProductKey = AAAAA-BBBBB-CCCCC-DDDDD-EEEEE-FFFFF - Entrez la clé KMS du produit (5 blocs de 5 caractères alphanumériques).
  • OverrideProductKey= AAAAA-BBBBB-CCCCC-DDDDD-EEEEE-FFFFF - Permet d'affecter une clé MAK lorsque le serveur KMS est injoignable

7. Réglages des préférences régionales

Titre de l'écran de l'assistant : Locale and Time
Fichier de configuration : CustomSettings.ini
Directives de masquage : SkipLocaleSelection =YES : SkipTimeZone=YES

MDT03-img13
Aperçu de la page - Préférences régionales

Propriétés concernées :

  • UILanguage=fr-FR - Entrez l'identifiant de la langue d'installation - ici "French (France)"
  • UserLocale=fr-FR - Entrez la préférence régionale - ici "French (France)"
  • KeyboardLocale= 040C:0000040C - Entrez le code pays selon le clavier désiré - ici "French"
  • TimeZoneName = Romance Standard Time - Entrez le nom du fuseau horaire - ici "(UTC+01:00) Brussel, Copenhagen, Madrid, Paris"
  • TimeZone=105 - Alternative au précédent - Entrez le code du fuseau horaire - ici "105" pour celui de la France

8. Applications à installer

Titre de l'écran de l'assistant : Applications
Fichier de configuration : CustomSettings.ini
Directives de masquage : SkipApplications=YES : SkipAppsOnUpgrade=YES

MDT03-img14
Aperçu de la page - Applications à installer

Cet écran permet de sélectionner les applications qui seront installées durant la tache de post-installation d'une séquence de taches.

Propriétés concernées :

  • Applications00x ={guid} - Ces directives particulières commencent par "Applications" suivi d'un numéro d'ordre de 001 à 999. La valeur doit correspondre l'identifiant global unique {GUID} des applications. Vous pouvez retrouver cette valeur au niveau des propriétés de chaque application ajoutée dans le MDT.
  • MandatoryApplications00x ={guid} - Identique au précédent, mais rend obligatoire l'installation de l'application. En fait, la case ne peut pas être décochée (grisée) lorsque cet écran est affiché.

9. Saisie du mot de passe d'administrateur local

Titre de l'écran de l'assistant : Administrator Password
Fichier de configuration : CustomSettings.ini
Directive de masquage : SkipAdminPassword =YES

MDT03-img15
Aperçu de la page - Mot de passe Administrateur

Propriétés concernées :

  • AdminPassword =MotDePasse - Entrez le mot de passe du compte d'administrateur local en clair. Si cette information n'est pas mentionnée, MDT conservera le mot de passe défini dans la base de compte locale du système installé. Autrement dit, pour une distribution originale Microsoft, le mot de passe est vide, mais pour une image de référence, le mot de passe peut être défini durant la séquence de fabrication préalable à sa capture.

10 . Capture d'une image de référence

Titre de l'écran de l'assistant : Capture Image
Fichier de configuration : CustomSettings.ini
Directive de masquage : SkipCapture =YES

MDT03-img16
Aperçu de la page - Capture d'une image de référence

Propriétés concernées :

  • DoCapture= - Entrez la valeur "YES" pour activer la première option de capture, soit "Capture an image of this reference computer.", ou entrez la valeur "SYSPREP" pour activer la seconde option, soit "Sysprep this computer.", ou entrez la valeur "PREPARE" pour activer la troisième option, soit "Prepare to capture this machine."

Si vous optez pour l'option la plus courante, soit "DoCapture=YES", vous avez la possibilité de spécifier le chemin et le nom de l'image de destination. Les directives sont les mêmes que pour une sauvegarde.

  • ComputerBackupLocation=\\Serveur\Partage - Entrez le chemin UNC de destination de la capture. Par défaut, ce chemin correspond au sous dossier "Captures" situé sur le partage de déploiement, comme par exemple "\\WDS_MDT\DeploymentShare\Captures". N'oubliez pas d'accorder les autorisations d'écriture sur cette ressource.
  • BackupFile=Fichier.WIM - Entrez le nom de l'image .wim résultante. Correspond par défaut à l'identifiant de la séquence de tache, soit "%TaskSequenceID%.wim"

11. Résumé préalable

Titre de l'écran de l'assistant : Ready to begin
Fichier de configuration : CustomSettings.ini
Directive de masquage : SkipSummary =YES

MDT03-img17
Aperçu de la page - Résumé des opérations

Propriétés concernées : N/A

12. Résumé de fin de déploiement

Titre de l'écran de l'assistant : Operating system deployment completed successfully : Operating system deployment did not complete successfully
Fichier de configuration : CustomSettings.ini
Directive de masquage : SkipFinalSummary =YES

Ecran Blanc = Aucune erreur, Jaune = Avertissement, Rose = Erreur critique

MDT03-img18
Aperçu de la page - Etat de l'opération

Quand il y a une erreur, ça donne ça :

MDT03-img19

Propriétés concernées :

  • FinishAction= - Permet de définir le comportement souhaité à l'issue du déploiement, par défaut si l'écran n'est pas masqué, le résumé de fin de déploiement reste affiché. Entrez l'une des valeurs, telle que "LOGOFF | SHUTDOWN | RESTART | REBOOT" afin de respectivement, fermer la session, arrêter, redémarrer à chaud ou à froid l'ordinateur.

Afin de ne pas trop alourdir cette présentation déjà conséquente, je vous invite à vous reporter à la documentation officielle pour les autres cas particuliers non abordés ici.

Ecran de l'assistantMasqué via cette propriétéConfigurer  ces propriétés
Computer BackupSkipComputerBackup·    BackupDir·    BackupShare·    ComputerBackupLocation
Language PacksSkipPackageDisplay·    LanguagePacks
Roles and FeaturesSkipRoles·    OSRoles·    OSRoleServices·    OSFeatures
Local AdministratorsSkipAdminAccounts·    Administrators
BitlockerSkipBitLocker·    BDEDriveLetter·    BDEDriveSize·    BDEInstall·    BDEInstallSuppress·    BDERecoveryKey·    TPMOwnerPassword·    OSDBitLockerStartupKeyDrive·    OSDBitLockerWaitForEncryption

 

E. Exemple de personnalisation

1. Postulat du cas étudié

Afin d'illustrer tout ceci, nous allons prendre l'exemple d'une capture d'un poste de référence. En effet, si vous n'êtes pas encore familiarisé avec ce concept, on peut considérer que contrairement aux scénarios habituels de déploiement, il s'agit d'un cas particulier que la séquence de tache associée doit prendre en compte.

Pour faire court, cette notion de "capture" est essentiellement liée aux processus de fabrication d'un ordinateur de référence, souvent désigné par l'anglicisme "Master". Sur le plan pratique, la capture consiste à générer une image .WIM à partir d'un poste remis en condition de déploiement via l'outil "sysprep". Avec MDT, on peut distinguer 2 techniques de fabrication :

  • La capture manuelle : L'installation et la configuration de l'ordinateur de référence est faite manuellement puis on sollicite ensuite via le réseau, le script "LiteTouch.vbs" situé sur le partage MDT, afin de déclencher une séquence de tache de type "Sysprep and Capture".
  • La capture automatisée : L'installation et la configuration de l'ordinateur de référence est réalisée par une séquence de tache de type "Standard Client Task Sequence" à laquelle on associe l'enchainement des actions de préparation et de capture. Bien que plus délicate à mettre au point, cette méthode garantit et normalise le processus de fabrication.

2. Appliquer une configuration à une machine précise

Il existe plusieurs moyen d'identifier un ordinateur, mais pour cet exemple, nous allons distinguer la machine de référence (virtuelle ou non) par son adresse MAC. Pour cela, il suffit d'ajouter la variable "MACAddress" au niveau de la directive "Priority=" et d'ajouter une nouvelle section correspondante à la valeur de l'adresse physique de la machine, au format [00:00:00:AA:BB:CC].

Note : Sous Windows, les commandes "arp" ou "ipconfig" renvoient l'adresse MAC séparée par un tiret avec les lettres en minuscule. Pour MDT, il faudra remplacer les tirets par des double-points et mettre les lettres en majuscule, soit en langage powershell : ("00-15-5d-00-2c-15").Replace("-",":").ToUpper()

Besoin d'un script plus élaboré pour valider le format ?, cf ici

3 . Création de la séquence de test

Pour un premier test de cette configuration, je vous propose de créer une nouvelle séquence de tache de type "Sysprep and Capture". Par exemple, nous lui affectons l'identifiant "CAPT-001" et le nom arbitraire "Sysprep et Capture uniquement". Au besoin, vous pouvez ajouter cette information dans le fichier au niveau de la section correspondante à l'adresse MAC de notre machine de test.

MDT03-img20

4. Directives à ajouter dans CustomSettings.ini

Donc dans le cadre de cette démonstration, il nous faut renseigner les directives suivantes :

DirectiveExplications
SkipCapture = NO | YES Pour afficher ou masquer l'écran de capture
DoCapture=YESActive l'option de capture, soit "Capture an image of this reference computer"
ComputerBackupLocation=Chemin de destination local ou réseau pour une sauveagarde ou une capture. Pour un partage réseau, l'équivalent est "%BackupShare%\%BackupDir%"
BackupShare= Correspond par défaut au chemin UNC du partage de déploiement "%DeployRoot%"
BackupDir=Correspond par défaut au sous-dossier  "\Captures" situé à la racine du partage de déploiement
BackupFile=Correspond par défaut à l'identifiant de la séquence de tache, soit "%TaskSequenceID%.wim"

Remarque importante : Les processus de capture MDT échouent systématiquement dès lors que l'ordinateur est membre d'un domaine. Autrement dit, les séquences de capture ne sont traitées que sur des ordinateurs autonomes au sein d'un simple groupe de travail.

Le fichier de configuration devrait approximativement ressembler à ceci :

[Settings]
Priority = MACAddress,Default
Properties=MyCustomProperty

[00:15:5D:00:2C:15]
SkipTaskSequence=NO 
TaskSequenceID=CAPT-001

SkipCapture=NO
DoCapture=YES
; ComputerBackupLocation=%DeployRoot%\Captures
; ou 
BackupShare=%DeployRoot%
BackupDir=Captures
BackupFile=%TaskSequenceID%.wim

[Default]
SkipCapture=YES
DoCapture=NO

Notez que dans un premier temps, il est préférable de conserver l'affichage des écrans afin de vérifier que les champs soient correctement remplis.

Pour rappel, n'oubliez pas que le dossier de capture doit être accessible en lecture/écriture et que l'exécution du script nécessite généralement des privilèges d'administration.

5. Test du résultat

A partir de la machine de test sur laquelle un système est déjà installé, il ne reste plus qu'à connecter un lecteur réseau pointant sur le serveur MDT et exécuter le script "LiteTouch.vbs" situé sous le dossier "Scripts".

net use z: \\WDS-MDT\DeploymentShare$ /user:WDS-MDT\Admin *
Entrez le mot de passe pour \\WDS-MDT\DeploymentShare$ :
Z:\Scripts\LiteTouch.vbs

Selon le niveau de sécurité du poste, une confirmation d'exécution peut être affichée.

MDT03-img21

A l'issue du traitement des fichiers bootstrap.ini et customsetting.ini, et sous réserve que vous ayez correctement saisi l'adresse MAC de la machine de test, l'écran de choix des séquences de taches devrait apparaître avec l'option "Sysprep et Capture uniquement" sélectionnée.

MDT03-img22

Si c'est bien le cas, pour la prochaine étape, vous pourrez éventuellement changer la directive par SkipTaskSequence=YES. Cliquez sur "Next".

L'écran de capture devrait alors apparaître. Et là encore, la première option doit être déjà sélectionnée et les champs "Location" et "File name" devraient contenir les bonnes informations.

MDT03-img23

Si c'est bien le cas, pour le test suivant, vous pourrez changer la directive par SkipCapture=YES
Cliquez sur "Cancel".

La démonstration peut s'achever ici, du fait qu'il s'agissait de montrer un exemple simple de capture. Cela étant, il faudrait encore ajuster quelques réglages afin de parfaire cette opération, tels que l'ajout d'applications, de packages ou bien ajuster les composants Windows souhaités.

Voici un exemple de configuration finalisé

[Settings]
Priority = MACAddress,Default
Properties=MyCustomProperty

[00:15:5D:00:2C:15]
_SMSTSORGNAME=Creation de l'image de reference - %TaskSequenceID%

SkipTaskSequence=YES 
 TaskSequenceID=CAPT-001

SkipCapture=YES
 DoCapture=YES
 BackupShare=\\WDS-MDT\DeploymentShare$
 BackupDir=Captures
 BackupFile=BUILD-v%TaskSequenceVersion%.wim

; ajoutez ici les applications a integrer dans l'image de reference
SkipApplications=NO
SkipAppsOnUpgrade=YES
 ; Applications001={GUID1}
 ; Applications002={GUID2}
 ; Applications003={GUID3}

SkipUserData=YES
 UserDataLocation=NONE

SkipComputerName=YES
 OSDComputerName=BUILD-001
SkipDomainMembership=YES
 JoinWorkGroup=WORKGROUP

SkipLocaleSelection=YES
SkipTimeZone=YES
 UILanguage=fr-FR
 UserLocale=fr-FR
 KeyboardLocale= 040C:0000040C
 TimeZoneName=Romance Standard Time

DoNotCreateExtraPartition=YES
ApplyGPOPack=NO
SLShare=\\WDS-MDT\logs
; pensez a reactiver les taches Windows Update dans la TS
WSUSServer=http://wsus

SkipAdminPassword=YES
SkipBitLocker=YES
SkipProductKey=YES
SkipRoles=YES

SkipSummary=YES
SkipFinalSummary=NO
 FinishAction=SHUTDOWN

[Default]
_SMSTSORGNAME=Deploiement par defaut - %TaskSequenceID%
OSInstall=Y
SkipCapture = YES

Exemple de résultat :

MDT03-img24

MDT03-img25

Maintenant tous ces choix vous incombent et j'espère que cette présentation sera suffisante à votre envol vers de nouvelles aventures avec MDT.

Conseil : Pensez à sauvegarder régulièrement vos fichiers de configuration opérationnels avant d'effectuer des modifications. Pour l'anecdote, je ne compte plus les heures perdues à chercher une "fausse erreur de traitement" liée simplement à un mauvais encodage du fichier en UTF8 au lieu de ANSI.

F. La base de données MDT DB

Après tout ce remue-méninge autour de ce fameux fichier de configuration, un constat viens rapidement à l'esprit. A une plus grande échelle, le nombre de ligne va très rapidement augmenter, et on atteint très rapidement les limites en termes de lisibilité. En effet, les risques de doublons ou d'erreur dans les déclarations de variables n'est pas négligeable et difficile à identifier. Est-ce raisonnable de maintenir un tel fichier pour gérer toutes les déclinaisons de mon entreprise ?

C'est à ce moment que la base de données "MDT DB" devient intéressante.

Installer une base de donnée pour MDT peut paraitre délicat pour un néophyte et pour débuter, un tutoriel arrivera prochainement dans lequel j'aborde l'installation d'une base SQL Server Express ainsi que l'exploitation des nouvelles possibilités telles que la notion de rôles

IV. Aller plus loin avec CS.ini : Quelques Trucs et Astuces

A. Ne pas créer la partition additionnelle d'amorçage

Vous avez sans doute remarqué que le MDT génère une partition supplémentaire dans le but d'y stocker les fichiers d'amorçage et surtout dans l'hypothèse d'activer le chiffrement intégral de disque BitLocker. Hors, cette fonctionnalité n'est disponible pas sur les versions, vous pouvez désactiver la création de cette partition supplémentaire via la directive suivante :

DoNotCreateExtraPartition=YES

B. Affecter des valeurs dynamiques aux variables MDT

1. Personnalisation de la bannière de déploiement

Nous avons vu qu'il était possible d'affecter de nombreuses valeurs aux propriétés MDT , comme par exemple " _SMSTSOrgName= MonEntreprise" pour personnaliser la bannière de déploiement. Toutefois, ces valeurs sont statiques et il peut être parfois intéressant de composer dynamiquement certains contenus.

Exemples :

Pour afficher l'identifiant de la séquence et le nom de l'ordinateur sur la bannière de déploiement, vous pourriez utiliser la directive suivante :

_SMSTSOrgName = Execution de la séquence %TaskSequenceID% sur %OSDComputername%

2. Personnalisation des noms de machines

Pour composer vos propres noms de machine à partir des 5 derniers chiffres du numéro de série, vous pourriez utiliser la directive suivante :

OSDComputername = PC-#Right("%SerialNumber%",4)#

Les caractères "#" permettent d'encadrer le code à évaluer

3. Ciblage des pilotes en fonction des machines

Pour maîtriser la distribution des pilotes en fonction de la marque et du modèle de machine

DriverSelectionProfile=Nothing
DriverInjectionMode=ALL
DriverGroup001=Windows 7\x64\%Make%\%Model%

Notez que cette astuce ne fonctionne que si vos pilotes sont organisés selon une hiérarchie de dossiers correspondant exactement à la marque et au modèle de machine renvoyé par les requêtes WMI. Vous pouvez obtenir ces renseignements :

- Via la console WMI

WMIC CSProduct Get Name, Vendor

Relevez collectez les valeurs "Vendor" (Make) et "Name" (Model)

- Via Powershell

Get-WmiObject Win32_ComputerSystem | Select Model,Manufacturer

Relevez les valeurs "Manufacturer" (Make) et "Model" (Model)

4. Ajouter la date de création sur le fichier de capture

Cet exemple permet de nommer le fichier résultant d'une capture ajoutant la date de fabrication à l'identifiant la séquence de tache.

DoCapture=YES
BackupShare=%DeployRoot%
BackupDir=Captures
BackupFile=%TaskSequenceID%_#day(date) & "-" & month(date) & "-" & year(date)#.wim

C. Activer les mises à jour Windows Update, mais bloquer des correctifs indésirables

WSUSServer=http://WSUSServer:8530

WUMU_ExcludeKB001=976002 
WUMU_ExcludeKB002=2267621
WUMU_ExcludeKB003=2434419

Par exemple, le programme européen de choix du navigateur par défaut, silverlight, la barre d'outil "Bing",…

;Microsoft Browser Choice Screen Update for EEA Users of Windows 7 for x64-based Systems (KB976002)
 WUMU_ExcludeKB1=976002
 ;Microsoft Silverlight (KB2636927)
 WUMU_ExcludeKB2=2636927
 ;Windows Internet Explorer 9 for Windows 7 for x64-based Systems (KB982861)
 WUMU_ExcludeKB3=982861
 ;Bing Desktop (KB2694771)
 WUMU_ExcludeKB4=2694771

Attention : Par défaut les taches de mise à jour sont présentes, mais désactivées

MDT03-img26

D. Masquer les invites de commande

Pour masquer les invites de commande ouvertes durant les taches de déploiement telles que l'installation des applications, vous pouvez utiliser la directive suivante :

HideShell=YES

Utilisez toutefois, ce réglage avec parcimonie, car certaines applications ne supportent pas toujours ce genre de contrainte.

E. Définir le service de surveillance des déploiements MDT (Monitoring)

Depuis MDT2012, vous pouvez activer un service de surveillance de vos déploiements MDT. Pour cela, utilisez la directive suivante :

EventService=http://SERVER:9800

F. Ajouter des administrateurs locaux

Vous avez la possibilité d'ajouter des administrateurs locaux, comptes d'utilisateur ou groupes d'un domaine via la directive suivante :

Administrators001=Domaine\NomDuGroupe

G. Activer la journalisation dynamique des déploiements

MDT permet d'activer , la journalisation dynamique des déploiements via la directive suivante :

SLShareDynamicLogging=\\SERVER\SHARE$\Logs\%OSDComputerName%

N'abusez pas de ce réglage qui peut engendrer un augmentation significative du trafic réseau.

Annexes - Clés d’installation des clients KMS

Ne vous emballez pas, il s'agit là d'une information tout à fait légale, disponibles sur les sites officiels de Microsoft : Technet - Clé KMS

Les clés fournies ci-après n'ont aucune valeur pour l'activation et sont uniquement destinées aux processus d'installation automatisées. Dans la plupart des cas, vous disposez d'une période de grâce de 30 jours pour entrer votre clé de licence effectivement acquise dans le cadre contractuel.

Remarque : Pour installer une clé d’installation de client, ouvrez une invite de commandes d’administration sur le client, tapez slmgr /ipk <clé d’installation> et appuyez sur ENTRÉE.

Windows Server 2012R2 et Windows 8.1

 Édition du système d’exploitation Clé d’installation du client KMS
Windows Server 2012 R2 StandardD2N9P-3P6X9-2R39C-7RTCD-MDVJX
Windows Server 2012 R2 DatacenterW3GGN-FT8W3-Y4M27-J84CP-Q3VJ9
Windows 8.1 EntrepriseMHF9N-XY6XB-WVXMC-BTDCT-MKKG7

 

Windows Server 2012 et Windows 8

 Édition du système d’exploitation Clé d’installation du client KMS
Windows 8 ProfessionnelNG4HW-VH26C-733KW-K6F98-J8CK4
Windows 8 Professionnel NXCVCF-2NXM9-723PB-MHCB7-2RYQQ
Windows 8 Entreprise32JNW-9KQ84-P47T8-D8GGY-CWCK7
Windows 8 Entreprise NJMNMF-RHW7P-DMY6X-RF3DR-X2BQT
Windows Server 2012 CoreBN3D2-R7TKB-3YPBD-8DRP2-27GG4
Windows Server 2012 Core N8N2M2-HWPGY-7PGT9-HGDD8-GVGGY
Windows Server 2012 Core Unilingue2WN2H-YGCQR-KFX6K-CD6TF-84YXQ
Windows Server 2012 Core Country Specific4K36P-JN4VD-GDC6V-KDT89-DYFKP
Windows Server 2012 Server StandardXC9B7-NBPP2-83J2H-RHMBY-92BT4
Windows Server 2012 Standard CoreXC9B7-NBPP2-83J2H-RHMBY-92BT4
Windows Server 2012 MultiPoint StandardHM7DN-YVMH3-46JC3-XYTG7-CYQJJ
Windows Server 2012 MultiPoint PremiumXNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G
Windows Server 2012 Datacenter48HP8-DN98B-MYWDG-T2DCC-8W83P
Windows Server 2012 Datacenter Core48HP8-DN98B-MYWDG-T2DCC-8W83P

Windows 7 et Windows Server 2008 R2

 Édition du système d’exploitation Clé d’installation du client KMS
Windows 7 ProfessionnelFJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
Windows 7 Professionnel NMRPKT-YTG23-K7D7T-X2JMM-QY7MG
Windows 7 Professionnel EW82YF-2Q76Y-63HXB-FGJG9-GF7QX
Windows 7 Entreprise33PXH-7Y6KF-2VJC9-XBBR8-HVTHH
Windows 7 Entreprise NYDRBP-3D83W-TY26F-D46B2-XCKRJ
Windows 7 Entreprise EC29WB-22CC8-VJ326-GHFJW-H9DH4
Windows Server 2008 R2 Web6TPJF-RBVHG-WBW2R-86QPH-6RTM4
Windows Server 2008 R2 HPC EditionTT8MH-CG224-D3D7Q-498W2-9QCTX
Windows Server 2008 R2 StandardYC6KT-GKW9T-YTKYR-T4X34-R7VHC
Windows Server 2008 R2 Entreprise489J6-VHDMP-X63PK-3K798-CPX3Y
Windows Server 2008 R2 Datacenter74YFP-3QFB3-KQT8W-PMXWJ-7M648
Windows Server 2008 R2 pour les systèmes ItaniumGT63C-RJFQ3-4GMB6-BRFB9-CB83V

Windows Vista et Windows Server 2008

 Édition du système d’exploitation Clé d’installation du client KMS
Windows Vista ProfessionnelYFKBB-PQJJV-G996G-VWGXY-2V3X8
Windows Vista Professionnel NHMBQG-8H2RH-C77VX-27R82-VMQBT
Windows Vista EntrepriseVKK3X-68KWM-X2YGT-QR4M6-4BWMV
Windows Vista Entreprise NVTC42-BM838-43QHV-84HX6-XJXKV
Windows Web Server 2008WYR28-R7TFJ-3X2YQ-YCY4H-M249D
Windows Server 2008 StandardTM24T-X9RMF-VWXK6-X8JC9-BFGM2
Windows Server 2008 Standard sans Hyper-VW7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ
Windows Server 2008 EntrepriseYQGMW-MPWTJ-34KDK-48M3W-X4Q6V
Windows Server 2008 Entreprise sans Hyper-V39BXF-X8Q23-P2WWT-38T2F-G3FPG
Windows Server 2008 HPCRCTX3-KWVHP-BR6TB-RB6DM-6X7HP
Windows Server 2008 Datacenter7M67G-PC374-GR742-YH8V4-TCBY3
Windows Server 2008 Datacenter sans Hyper-V22XQ2-VRXRG-P8D42-K34TD-G3QQC
Windows Server 2008 pour les systèmes Itanium4DWFP-JF3DJ-B7DTH-78FJB-PDRHK

 

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 Viadeo et LinkedIn : Christophe Mandin

    cnf1g a publié 32 articles sur IT-Connect.See all posts by cnf1g

    51 réactions sur “Configuration avancée de MDT 2013

    • 06/09/2016 à 17:56
      Permalink

      Pour information, les commandes DISM sont à taper dans l’invite de commande de l’ADK,(Raccourci « Environnement de déploiement et d’outils de création d’images » qui modifie le %PATH%) et non l’invite de cmd standard qui utilise le DISM du système. (Dans le cas présent, ça marchera aussi à partir d’un Windows 10, sans ADK, puisque l’image WIM cible est sur un noyau W10).
      En règle générale, il faut que la version de DISM.exe, soit égale ou supérieure à la version de l’OS contenu dans l’image WIM que l’on manipule …

      Bonne continuation

      Répondre
    • 27/09/2016 à 20:26
      Permalink

      Bonjour,

      j’ai installé MDT 2013, je l’ai configuré en suivant votre tuto, tout fonctionne bien pour un deploiemnt sur une machine virtuelle mais dès que je lance le deploiement sur une machine physique « Dell Optiplex 790 », il load le fichier LTE.wim puis après 7 secondes de l’apparaition de la fenêtre Microsoft Deployement Kit la machine redémarre.

      j’ai essayé en changeant la configuration mais pas réussit. avez-vous une piste ??

      Répondre
    • 29/09/2016 à 21:16
      Permalink

      Bonjour,
      Avec ces éléments je n’ai pas vraiment d’explication… Est-ce que l’écran wizard est affiché ou le redemarrage est-il constaté avant ? Quelle est la taille du « scratch space » ? (–> 128) Est-ce que le symptôme est identique sur un autre poste physique, un autre modèle ? Est-ce le démarrage à partir d’une image LTI générique est « stable » ? état du réseau, du disque local, de la RAM. Essayez des commandes notepad, regedit, mountvol, diskpart, ipconfig, net use \\mdt\… histoire de vérifier que le noyau WinPE et le matériel de base sont bien accessibles (débrancher les périphériques externes inutiles, vérifier la config et la dernière version du BIOS, et un test mémoire éventuellement).
      Bon courage

      Répondre
    • 06/11/2016 à 16:49
      Permalink

      Bonjour,
      Vous semblez bien maitriser MDT, je profite donc de vous poser 2 questions :
      Comment forcer l’installation d’un seul driver (USB) qui n’est pas détecté par MDT (probablement parce que MDT détecte seulement le contrôleur/concentrateur de BUS USB3, dont il installe bien le driver. Et seulement après l’installation du driver du concentrateur USB il détecte les périphériques USB)
      Comment empêcher MDT d’effacer tout le Disque Dur dans le but de garder une partition contenant beaucoup de données? (Désactiver l’étape “Format and Partition Disk” ne suffit pas car il ne trouve plus la partition sur laquelle il installe l’OS) peut être faut il initialiser une variable?
      Merci d’avance

      Répondre
    • 06/11/2016 à 19:11
      Permalink

      Bonjour Marc,
      – Pour la première question je ne suis pas sur de comprendre. Est-ce durant la phase de détection, après le premier redémarrage (apply image) ? Les drivers nécessaires sont-ils copiés en fonction du modèle et/ou le profil de sélection est-il correctement défini ? Y-a-t-il une intervention manuelle ? A ma connaissance, on peut forcer l’installation d’un driver via pnputil (en tant qu’application MDT) mais c’est plutot vers la fin du process. Pour une dispo plus précoce, le mieux est de déposer tous les drivers importants via l’action « Inject Drivers » sous « Preinstall » d’une séquence de tache « Standard Client » mais si la détection est encore trop tardive, il faudra soit capturer les drivers (PersistentAllDeviceInstalls=true) dans l’image, ce que je déconseille, ou les injecter dans l’image offline (montée) via dism /add-driver …
      – Concernant la préservation des données le MDT ne propose que l’USMT et/ou le Backup dans le cadre d’un « Refresh Computer ». Donc, pour éviter d’écraser tout le disque 0 et ne traiter que les partitions système/boot, il faut effectivement reprendre les actions « Format and Partition Disk » sous « Preinstall … New computer only » à l’instar de ce qui est proposé ici : https://bjtechnews.org/2012/06/18/episode-21-keeping-the-original-partition-in-mdt-2012/
      Bonne continuation

      Répondre
    • 07/11/2016 à 00:04
      Permalink

      Merci pour avoir répondu aussi rapidement.
      Concernant ce driver, certains PC sont installés avec un deploymentshare sur une clef USB, donc impossible de lancer une application puisque qu’après l’installation de l’OS, le script n’accède plus à la clef USB 🙁 J’ai donc essayé différentes solutions : installer tous les drivers en choisissant « Install All Drivers from selection profile » => solution lourde car beaucoup trop de drivers sont installés,
      Autre solution en choisissant « install only matching drivers » (solution qui n’injecte que le nécessaire) puis en créant juste derrière une deuxième séquence « inject drivers » qui ne contient qu’un profil limité aux seuls drivers que je jugerai obligatoires. Cette deuxième séquence « inject drivers » possède l’option « install all drivers »
      Cette solution permet de limiter le nombre de drivers chargés,elle permet d’être intégrée à la task séquence standard à tous types d’installations et donc évite d’avoir de trop nombreuses task sequence spécifiques.
      Ce n’est pas facile d’expliquer cela par ecrit

      Concernant le maintien de la partition, j’ai désactivé le formatage et j’ai modifié la sequence « install Operating System » en selectionnant l’option « Next available formatted partition »

      Merci pour ton aide précieuse

      Répondre
    • 01/12/2016 à 11:35
      Permalink

      Bonjour,

      J’ai un souci depuis que je suis passé sur mdt 2013. Je fais une installation d’OS Windows 2012 R2 avec 3 partitions (C:\, E:\ et F:\). Le souci est que le répertoire \MININT se crée sur la dernière partition (il me semble que c’est celle qui a la plus grosse taille), et non sur la partition C:\. Lorsque j’assigne d’autres lettres aux partitions la séquence s’arrete car elle ne trouve plus ce répertoire.
      Est-il possible de forcer ce répertoire sur la partition C:\?
      Merci pour votre aide.

      Répondre
      • 01/12/2016 à 21:36
        Permalink

        Bonjour RAN,
        Je n’ai jamais constaté ce genre de cas mais j’aurais besoin de compléments pour diagnostiquer:
        – « depuis que je suis passé sur mdt 2013 » – Est-ce que cela fonctionnait avec une version antérieure de MDT ?
        – « Le souci est que le répertoire \MININT… » – A mon avis, ce n’est l’origine du problème. Ce dossier de log passe de X:\ vers C:\ (ou une autre pendant le déploiement) puis fini dans c:\Windows\Temp. A ma connaissance, il n’est pas possible d’imposer un chemin.
        – « Lorsque j’assigne d’autres lettres aux partitions … » – Comment et quand cette assignation est-elle réalisée ?
        Normalement, ds une TS Standard, c’est la tache « Format and Partition Disk (BIOS) ou (UEFI) » dans le groupe « Preinstall » qui assure le partitionnement. Il me semble que les lettres se positionnent par défaut en fonction du type et de la variable OSDisk pour « c: ». Lorsque je gère des cas de partitions multiples, je garde ce même principe,(sans lettre), puis j’ajoute une « install application » en « state restore » avec un script ou diskpart (select disk 0, select part n, assign letter …) mais cela dépend de ce qu’on veut faire de ces partitions durant le déploiement. (Le mdt et xml de configuration ne se réfèrent pas aux lettres, mais plutot ou numéro de disque et de volume/partition)
        A bientôt

        Répondre
        • 02/12/2016 à 09:39
          Permalink

          Bonjour,
          Merci de m’avoir répondu aussi vite.
          Pour le partitionnement j’utilise une tache « Format and Partition Disk » dans le groupe « Preinstall ». Puis dans le groupe « State Restore », je positionne les lettres avec une tache « Run Commande Line » pour lancer un diskpart. Lors de l’étape d’installation de l’OS (à cemoment là la partition système a la lettre X:\), j’ai remarqué que le répertoire \Minint se crée sur une autre partition (plus précisement E:\ qui a la taille la plus grosse).
          Je n’ai pas vu ce problème sur la version précédente de MDT utilisée(2012).
          Merci encore pour votre aide.

          Répondre
        • 02/12/2016 à 14:52
          Permalink

          Bonjour Christophe,
          Je ne sais si ma dernière réponse a bien été enregistré, alors je me permets de le réecrire, désolé si c’est un doublon.
          En tout cas merci pour m’avoir répondu aussi vite.
          Pour le partitionnement j’utilise bien une tache « Format and Partition Disk » dans le groupe Preinstall. Pour positionner les lettres, j’utilise une tache « Run Command Line » pour lancer un diskpart, ceci « en state restore ». Un reboot est effectué entre ces 2 actions.
          Petite précision, j’utilise commme média une clé USB. AU moment de la phase d’installation de l’OS sur la partition système, j’ai donc W:\ pour la partition système, C:\ et D:\ pour les 2 autres partitions et M:\ pour la clé USB. Le répertoire \MININT est créé sur la partition ayant la taille la plus grande (lettre D:\).
          Merci encore pour votre aide.

          Répondre
    • 02/12/2016 à 14:53
      Permalink

      Bonjour Christophe,
      Je ne sais si ma dernière réponse a bien été enregistré, alors je me permets de le réecrire, désolé si c’est un doublon.
      En tout cas merci pour m’avoir répondu aussi vite.
      Pour le partitionnement j’utilise bien une tache « Format and Partition Disk » dans le groupe Preinstall. Pour positionner les lettres, j’utilise une tache « Run Command Line » pour lancer un diskpart, ceci « en state restore ». Un reboot est effectué entre ces 2 actions.
      Petite précision, j’utilise commme média une clé USB. AU moment de la phase d’installation de l’OS sur la partition système, j’ai donc W:\ pour la partition système, C:\ et D:\ pour les 2 autres partitions et M:\ pour la clé USB. Le répertoire \MININT est créé sur la partition ayant la taille la plus grande (lettre D:\).
      Merci encore pour votre aide.

      Répondre
      • 02/12/2016 à 19:45
        Permalink

        Bonjour,
        C’est effectivement le process que je préconise habituellement, mais je n’ai pas testé sur MDT2013u2 (Il y a peut être un souci)
        A noter, que cette version MDT distingue dorénavant le partitionnement BIOS de UEFI (variable de condition isUEFI not/equal True). Une piste ?
        Mais là je seche 🙁
        Le blocage, c’est un écran noir, un écran d’erreur MDT ? Est-ce qu’il y a des logs dans le D:\MININT ? Après il faudra le MDT Debbuger pour les variables.
        Je suis charrette en ce moment, mais j’essayerais de tester ce scénario dès que possible. (Question à sommettre dans le forum ?…)
        Bon courage

        Répondre
    • 05/12/2016 à 14:59
      Permalink

      Bonjour,
      le Blocage est un écran d’erreur MDT « Can not find script file E:\MININT\Scripts\LTICleanup.wsf », la lettre de la partition ayant changé, le script n’est plus retrouvé. Pour contourner le problème, dans le groupe Preinstall je crée une partition plus petite que la partition système, puis je fais un Extend de cette partition « en state restore ». c’est pas tres joli mais c’est la seule solution que j’ai pour l’instant 🙂
      Pour le partitionnement, je n’ai pas utilisé les taches déjà présentes BIOS / UEFI, j’en ai créé une nouvelle, oui ça peut être une piste.
      Merci encore pour ton aide.

      Répondre
    • 20/03/2017 à 13:43
      Permalink

      Bonjour,

      Bravo pour votre tuto. J’ai réussi a mettre en place l’installation d’un Win10.
      J’ai une question si je peux me permettre. J’ai créé 2 partitions sur mon HDD. 50% pour l’OS et 100% du reste pour l’USERdata.( Soit 50/50)
      Quand le déploiement est terminé, ma clef de boot prend la lettre D et mon disque USB prend la lettre F. Je cherche désespérément le moyen de forcer la clef de démarrage à utiliser la lettre X par exemple, pour que mon Userdata puisse prendre la lettre D.
      D’avance merci.

      Rak

      Répondre
      • 20/03/2017 à 17:06
        Permalink

        Bonjour Rakoto,

        Le process de partitionnement MDT n’est pas prévu pour assigner les lettres d’unités (qui sont alors affectée par défaut). Il reste toutefois possible d’insérer une action de type « command line » après le partitionnement (ou plus tard) et d’utiliser « dispart » avec un fichier de réponse, ou en une seule ligne comme suit :

        echo sel disk 0 > .\diskpart.txt & echo sel part 2 >> .\diskpart.txt & echo assign letter=D >> .\diskpart.txt & diskpart.exe /s .\diskpart.txt & del .\diskpart.txt

        Je n’ai pas testé, mais en theorie ça devrait marcher…

        Bon courage

        Répondre
        • 22/03/2017 à 12:15
          Permalink

          Bonjour Christophe,

          Merci pour ta réponse.
          Je ne sais pas pourquoi mais lors du déploiement, MDT2013 va copier ses scripts sur le disque F. Alors que sur MDT2010 les copies se font par défaut sur le C. Je ne peux donc pas modifier le lecteur juste pendant le déploiement car ce dernier va planter.
          Pour contourner ce soucis, lors de la création du nouveau PC, je ne créé qu’une partition soit 50% du disque. MDT n’a pas le choix que d’utiliser cette partition C:.
          Dans mon « custom task », je créé une nouvelle partition F , et qui utilisera 100% du reste du disque. Ensuite je fais passer un vbs qui change les lettres. (Merci Google)
          D(USB) vers X
          F (data) vers D

          Et voilà

          Rak

          Répondre
          • 22/03/2017 à 14:22
            Permalink

            Bonjour,
            C’est un peu le même souci que le commentaire précédent de RAN, il semble que le MDT copie ses scripts sur la plus grande partition disponible à cet instant, avant le reboot. Le report des opérations de partitionnement vers la fin de la séquence semble donc être le plus judicieux. Je n’ai pas encore d’explication sur cette logique d’attribution des lettres/partitions (qui fait que MDT se tire une balle dans le pied) mais l’essentiel est d’avoir des solutions de contournement.
            Merci pour ce retour d’expérience
            PS: Merci de préciser la version exacte du MDT avec lequel vous rencontrez les problème (cf \Control\Version.xml) – A chaque nouvelle version, des bugs sont corrigés et de nouveaux se manifestent 🙂

            Répondre
    • 19/05/2017 à 15:08
      Permalink

      Bonjour Christophe,

      Le lien pour télécharger le script DeclareProperties.ps1 est mort (ou incorrect)

      As tu une copie de ce script ?

      Merci d’avance

      Didier R.

      Répondre
    • 19/05/2017 à 18:05
      Permalink

      Bonjour Didier,
      Le script date un peu mais est encore disponible ici :
      https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/6127/00/00/03/47/65/43/DeclareProperties.zip
      ou sur l’article https://blogs.technet.microsoft.com/deploymentguys/2012/01/20/finding-all-references-to-mdt-variables-in-a-deployment-share-variabledocumentor-v1-0/
      J’ai actualisé le lien de cet article 🙂
      Bonne continuation

      Répondre
    • 12/09/2017 à 16:54
      Permalink

      Bonjour,

      merci beaucoup pour votre tuto.

      J’ai une petite question. Mon serveur MDT est fonctionnel et les déploiement se font sans erreur que ce soit par le LiteTouch.vbs » situé sous le dossier « Scripts ». ou par WDS.
      Mais pour une meilleure optimisation, je souhaiterai masquer quelques écrans de l’assistant (notamment SkipBDDWelcome=YES). J’ai donc configuré mon bootstrap.ini et CustomSetting.ini cela fonctionne parfaitement quand j’exécute , via le serveur MDT, le script « LiteTouch.vbs » situé sous le dossier « Scripts ». Par-contre quand je lance MDT via mon serveur WDS ( au démarrage de mon poste par le réseau), aucune modification faite dans bootstrap.ini et CustomSetting.ini n’apparaît.
      J’ai essayé de regarder pourquoi cela fonctionnais d’un côté et non de l’autre. Et j’ai remarqué que par le WDS il chargeait uniquement « processing bootstrap settings » et non « processing Custom settings »

      Avez-vous une petite idée

      Merci d’avance

      Répondre
      • 13/09/2017 à 21:03
        Permalink

        Bonjour Melanie,
        Dans le cas d’un déploiement via PXE, le processus d’initialisation devrait être le même si le serveur WDS « pousse » l’image de démarrage LiteTouchPExx.wim.
        Autrement dit, chargement du noyau WinPE (x:), et fichier x:\unattend.xml qui lance X:\Deploy\Scripts\LiteTouch.wsf. Ensuite, il y a lecture du X:\Deploy\Scripts\bootstrap.ini. C’est grace aux informations de ressource « DeployRoot » et d’identification « UserID/UserDomain/UserPassword » que le script effectue une connexion du lecteur réseau (Z:) puis interprète ensuite le fichier « \Control\CustomSettings.ini ».
        A noter qu’en cas de modification du bootstrap.ini, il faudra régénérer l’image LiteTouchxx.wim via le MDT puis réimporter cette image de démarrage dans WDS.
        Bonne continuation

        Répondre

    Laisser un commentaire

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