J’ai été récemment amené à expliquer à un client le fonctionnement des fichiers Customsettings.ini et bootstrap.ini, j’en profite donc pour vous en faire un petit résumé.
- Introduction
L’un des fichiers les plus importants dans MDT est CustomSettings.ini (ou bootstrap.ini).
Lorsque vous utilisez le MDT, le Toolkit utilisera un script appelé ZTIGather.wsf. Ce script va faire un inventaire et lire le CustomSettings.ini. Cela se traduira par des informations stockées dans la mémoire (et dans un fichier) pendant le déploiement que nous pourons ensuite utiliser pour mettre à jour dynamiquement le fichier unattend.xml et contrôler des conditions dans les étapes de la TaskSequence.
Vous pouvez exécuter ce script sans déployer un OS, ainsi de cette façon vous pouvez tester les règles avant même de commencer le déploiement.
Pour ce faire :
Utilisez trace32.exe (placé ici dans e:\rep-trace\)
Créez un fichier batch comme celui-ci (changer les répertoires)
[pastacode lang= »bash » message= » » highlight= » » provider= »manual »]
del C:\MININT\SMSOSD\OSDLOGS\VARIABLES.DAT /q
cscript.exe ZTIGather.wsf /inifile:..\Control\CustomSettings.ini
“E: \rep-trace\Trace32.exe” c:\minint\smsosd\osdlogs\bdd.log
[/pastacode]
Si le répertoire c:\Minint n’existe pas, le créer.
Lancez-le dans un cmd depuis l’emplacement de vos scripts (dans le deployment Share).
Le Customsettings.ini base ressemble à ceci :
La première section est intitulée [Settings].
Sur la ligne suivante se trouve la propriété Priority avec comme valeur : default. Cela signifie qu’il va lire la section du même nom et de convertir toutes ces lignes en variable pour MDT. Toutes les propriétés de la section [Default] sont intégrées dans MDT, il y a plus 100 propriétés qui peuvent être utilisées et la plupart d’entre elles sont documentées dans le fichier d’aide. Si nous utilisons ZTIGather.wsf avec ce fichier (voir script ci-dessus), nous allons obtenir le résultat suivant :
- Exemple d’utilisation du CustomSettings.ini
Supposons maintenant que vous souhaitez définir automatiquement certains paramètres en fonction de l’emplacement, comme le nom de l’ordinateur, la langue, le fuseau horaire, etc. Dans ce cas, nous pourrions utiliser la passerelle par défaut comme un identificateur pour l’emplacement et utiliser une partie du numéro de série pour calculer un nom unique pour l’ordinateur basé sur l’emplacement et le numéro de série, ajoutons également portable ou desktop dans le nom. Ex : si l’ordinateur portable est situé à Paris le nom devrait être PAR-LT-0123456 et si un bureau est situé à Toulouse, il serait appelé TOU-DT-0123456.
[pastacode lang= »markup » message= » » highlight= » » provider= »manual »]
[Settings]
Priority=Init, ByLaptop, ByDesktop, DefaultGateway, Default
Properties=ComputerLocationName, ComputerTypeName, ComputerSerialNumber
[Init]
ComputerSerialNumber=#Left(“%SerialNumber%”,7)#
[ByLaptop]
SubSection=Laptop-%IsLapTop%
[Laptop-True]
ComputerTypeName=LT
[ByDesktop]
SubSection=Desktop-%IsDesktop%
[Desktop-True]
ComputerTypeName=DT
[DefautGateway]
10.0.2.4=paris
160.125.2.4=toulouse
[Paris]
ComputerLocationName=PAR
[Toulouse]
ComputerLocationName=TOU
[Default]
OSInstall=Y
ComputerLocationName=INC
ComputerTypeName=INC
OSDComputername=%ComputerLocationName%-%ComputerTypeName%-%ComputerSerialNumber%
SkipCapture=NO
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerBackup=NO
SkipBitLocker=NO
[/pastacode]
Explicatif du fichier ini :
• Section Settings
Nous avons ajouté « Init, ByLaptop, ByDesktop et DefaultGateway » à la propriété Priority.
La propriété « CustomProperties » permet d’initier des variables que nous utiliserons plus tard.
[pastacode lang= »markup » message= » » highlight= » » provider= »manual »]
[Settings]
Priority=Init, ByLaptop, ByDesktop, DefaultGateway, Default
Properties=ComputerLocationName, ComputerTypeName, ComputerSerialNumber
[/pastacode]
• Section Init
La section Init va utiliser le numéro de série (qui a été inventorié par le script), choisir les sept caractères à gauche et mettre cela dans la propriété ComputerSerialNumber.
[pastacode lang= »markup » message= » » highlight= » » provider= »manual »]
[Init]
ComputerSerialNumber=#Left(“%SerialNumber%”,7)#
[/pastacode]
• Section ByLaptop et ByDesktop
Le Script passe à la section indiquer dans Subsection si elle existe.
Pour cela nous utilisons des variables qui renvoi True ou False, ici %IsLapTop% et % IsDeskTop%
[pastacode lang= »markup » message= » » highlight= » » provider= »manual »]
[ByLaptop]
SubSection=Laptop-%IsLapTop%
[Laptop-True]
ComputerTypeName=LT
[ByDesktop]
SubSection=Desktop-%IsDesktop%
[Desktop-True]
ComputerTypeName=DT
[/pastacode]
• Section DefaultGateway
La section DefaultGateway dans MDT permet de récupérer la passerelle et de passer des paramètres en fonction de celle-ci.
Ici nous utiliserons cette fonctionnalité pour passer dans une autre section.
[pastacode lang= »markup » message= » » highlight= » » provider= »manual »]
[DefautGateway]
10.0.2.4=paris
160.125.2.4=toulouse
[Paris]
ComputerLocationName=PAR
[Toulouse]
ComputerLocationName=TOU
[/pastacode]
• Section Default
C’est la dernière section qui sera exécutée (ordre de la propriété Priority).
Les propriétés déjà implémentées ne sont pas écrasées (Attention il existe des exceptions).
Nous mettrons donc une valeur par défaut à nos variables de construction du nom machine en cas de passerelle inconnue.
[pastacode lang= »markup » message= » » highlight= » » provider= »manual »]
[Default]
OSInstall=Y
ComputerLocationName=INC
ComputerTypeName=INC
OSDComputername=%ComputerLocationName%-%ComputerTypeName%-%ComputerSerialNumber%
SkipCapture=NO
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerBackup=NO
SkipBitLocker=NO
[/pastacode]
- Customsettings ou Bootstrap ?
CustomSettings.ini : Fichier de configuration principal pour les règles de traitement utilisées dans tous les scénarios. Le fichier reste dans le dossier de déploiement.
BootStrap.ini : Fichier de configuration utilisé lorsque l’ordinateur cible n’est pas en mesure de se connecter au point de déploiement approprié. Cette situation survient dans un scénario de nouvel ordinateur et pour l’ordinateur de remplacement d’un scénario de remplacement d’ordinateur. Le fichier BootStrap.ini est intégré dans l’image de boot.
Attention : toutes les propriétés ne sont pas valides avec le bootstrap.ini
- Aperçu des propriétés possibles dans les ini
_SMSTSOrgName | OSDAdapterxEnableTCPFiltering |
ADDSLogPath | OSDAdapterxEnableTCPIPFiltering |
ADDSPassword | OSDAdapterxEnableWINS |
ADDSUserDomain | OSDAdapterxGatewayCostMetric |
ADDSUserName | OSDAdapterxGateways |
Administrators | OSDAdapterxIPAddressList |
AdminPassword | OSDAdapterxIPProtocolFilterList |
Applications | OSDAdapterxMacAddress |
ApplicationSuccessCodes | OSDAdapterxName |
ApplyGPOPack | OSDAdapterxSubnetMask |
Architecture | OSDAdapterxTCPFilterPortList |
AreaCode | OSDAdapterxTCPIPNetBiosOptions |
AssetTag | OSDAdapterxUDPFilterPortList |
AutoConfigDNS | OSDAdapterxWINSServerList |
AutoMode | OSDAdapterCount |
AutoUsers | OSDAnswerFilePath |
BackupDir | OSDBitLockerCreateRecoveryPassword |
BackupDrive | OSDBitLockerMode |
BackupFile | OSDBitLockerRecoveryPassword |
BackupShare | OSDBitLockerStartupKey |
BDEAllowAlphaNumericPin | OSDBitLockerStartupKeyDrive |
BDEDriveLetter | OSDBitLockerTargetDrive |
BDEDriveSize | OSDBitLockerWaitForEncryption |
BDEInstall | OSDComputerName |
BDEInstallSuppress | OSDDiskAlign |
BDEKeyLocation | OSDDiskIndex |
BDEPin | OSDDiskOffset |
BDERecoveryKey | OSDDiskPartBiosCompatibilityMode |
BDEWaitForEncryption | OSDImageCreator |
BitsPerPel | OSDImageIndex |
BuildID | OSDImagePackageID |
CapableArchitecture | OSDInstallEditionIndex |
CaptureGroups | OSDInstallType |
ChildName | OSDisk |
ComputerBackupLocation | OSDPartitions |
ComputerName | OSDPartitionsxBootable |
ConfigFileName | OSDPartitionsxFileSystem |
ConfigFilePackage | OSDPartitionsxQuickFormat |
ConfirmGC | OSDPartitionsxSize |
CountryCode | OSDPartitionsxSizeUnits |
CriticalReplicationOnly | OSDPartitionsxType |
CustomDriverSelectionProfile | OSDPartitionsxVolumeLetterVariable |
CustomPackageSelectionProfile | OSDPartitionsxVolumeName |
CustomWizardSelectionProfile | OSDPreserveDriveLetter |
Database | OSDStateStorePath |
DatabasePath | OSDTargetSystemDrive |
DBID | OSDTargetSystemRoot |
DBPwd | OSFeatures |
Debug | OSInstall |
DefaultGateway | OSRoles |
DeployDrive | OSRoleServices |
DeploymentMethod | OSSKU |
DeploymentType | OSVersion |
DeployRoot | OSVersionNumber |
DestinationDisk | OverrideProductKey |
DestinationLogicalDrive | PackageGroup |
DestinationPartition | Packages |
DHCPScopes | PackageSelectionProfile |
DHCPScopesxDescription | Parameters |
DHCPScopesxEndIP | ParameterCondition |
DHCPScopesxExcludeEndIP | ParentDomainDNSName |
DHCPScopesxExcludeStartIP | Password |
DHCPScopesxIP | Phase |
DHCPScopesxName | Port |
DHCPScopesxOptionDNSDomainName | PowerUsers |
DHCPScopesxOptionDNSServer | PrepareWinRE |
DHCPScopesxOptionLease | Priority |
DHCPScopesxOptionNBTNodeType | ProcessorSpeed |
DHCPScopesxOptionPXEClient | Product |
DHCPScopesxOptionRouter | ProductKey |
DHCPScopesxOptionWINSServer | Properties |
DHCPScopesxStartIP | ReplicaDomainDNSName |
DHCPScopesxSubnetMask | ReplicaOrNewDomain |
DHCPServerOptionDNSDomainName | ReplicationSourceDC |
DHCPServerOptionDNSServer | ResourceDrive |
DHCPServerOptionNBTNodeType | ResourceRoot |
DHCPServerOptionPXEClient | Role |
DHCPServerOptionRouter | SafeModeAdminPassword |
DHCPServerOptionWINSServer | ScanStateArgs |
Dialing | SerialNumber |
DisableTaskMgr | SiteName |
DNSServerOptionBINDSecondaries | SkipAdminAccounts |
DNSServerOptionDisableRecursion | SkipAdminPassword |
DNSServerOptionEnableNetmaskOrdering | SkipApplications |
DNSServerOptionEnableRoundRobin | SkipBDDWelcome |
DNSServerOptionEnableSecureCache | SkipBitLocker |
DNSServerOptionFailOnLoad | SkipBuild |
DNSServerOptionNameCheckFlag | SkipCapture |
DNSZones | SkipComputerBackup |
DNSZonesxDirectoryPartition | SkipComputerName |
DNSZonesxFileName | SkipDomainMembership |
DNSZonesxMasterIP | SkipFinalSummary |
DNSZonesxName | SkipGroupSubFolders |
DNSZonesxScavenge | SkipLocaleSelection |
DNSZonesxType | SkipPackageDisplay |
DNSZonesxUpdate | SkipProductKey |
DoCapture | SkipRearm |
DomainAdmin | SkipRoles |
DomainAdminDomain | SkipSummary |
DomainAdminPassword | SkipTaskSequence |
DomainLevel | SkipTimeZone |
DomainNetBiosName | SkipUserData |
DomainOUs | SkipWizard |
DoNotCreateExtraPartition | SLShare |
DoNotFormatAndPartition | SLShareDynamicLogging |
DriverGroup | SMSTSAssignUserMode |
DriverInjectionMode | SMSTSRunCommandLineUserName |
DriverPaths | SMSTSRunCommandLineUserPassword |
DriverSelectionProfile | SMSTSUdaUsers |
EventService | SQLServer |
EventShare | SQLShare |
FinishAction | StatePath |
ForceApplyFallback | StorageDriverGroup |
ForestLevel | StorageDriverSysprepGroup |
FullName | StoredProcedure |
GPOPackPath | SupportsHyperVRole |
Groups | SysPrepDriverSelectionProfile |
HALName | SystemLocale |
HideShell | SysVolPath |
OSHome_Page | Table |
HostName | TaskSequenceID |
ImagePackageID | TaskSequenceName |
InputLocale | TaskSequenceVersion |
InstallPackageID | TimeZone |
Instance | TimeZoneName |
IPAddress | TPMOwnerPassword |
IsDesktop | UDDir |
IsHypervisorRunning | UDProfiles |
IsLaptop | UDShare |
IsServer | UILanguage |
IsServerCoreOS | UserDataLocation |
IsServerOS | UserDomain |
IsUEFI | UserID |
IsVM | UserLocale |
JoinDomain | UserPassword |
JoinWorkgroup | USMT3 |
KeyboardLocale | USMTConfigFile |
KeyboardLocalePE | USMTLocal |
LanguagePacks | USMTMigFiles |
LoadStateArgs | USMTOfflineMigration |
Location | UUID |
LongDistanceAccess | ValidateDomainCredentialsUNC |
MACAddress | VHDCreateDiffVHD |
MachineObjectOU | VHDCreateFileName |
Make | VHDCreateSizeMax |
MandatoryApplications | VHDCreateSource |
Memory | VHDCreateType |
Model | VHDDisks |
NetLib | VHDInputVariable |
NewDomain | VHDOutputVariable |
NewDomainDNSName | VHDTargetDisk |
Order | VMHost |
OrgName | VMName |
OSArchitecture | VMPlatform |
OSCurrentBuild | VRefresh |
OSCurrentVersion | VSSMaxSize |
OSDAdapterxDescription | WDSServer |
OSDAdapterxDNSDomain | WindowsSource |
OSDAdapterxDNSServerList | WipeDisk |
OSDAdapterxDNSSuffix | WizardSelectionProfile |
OSDAdapterxEnableDHCP | WSUSServer |
OSDAdapterxEnableDNSRegistration | WUMU_ExcludeKB |
OSDAdapterxEnableFullDNSRegistration | WUMU_ExcludeID |
OSDAdapterxEnableLMHosts | XResolution |
OSDAdapterxEnableIPProtocolFiltering | YResolution |
Bonjour, merci pour votre article.
Je recherche le paramétré qui me permettrait d’ajouter un utilisateur du domaine directement sur le poste déployé. J’ai essayé ADDSUserName mais je pense que je fait erreur. Pouvez vous me conseiller ?
Bonjour,
vous cherchez a ajouter ce compte dans un groupe local ?
Non, j’aimerai justement après le deploiement avoir un compte appartenant au domaine de mon active directory et du groupe utilisateur ou administrateur sur mon poste .
Or après mon déploiement, mon poste à bien intégré mon domaine mais il ne possède aucun compte correspondant. Seulement son compte administrateur local
Bonjour,
J’avoue ne pas comprendre votre besoins. Si votre machine est intégrée à l’AD vous pouvez vous y connecter avec un compte du domaine.
Pouvez vous m’en dire plus et me preciser le système d’exploitation.
Pour être plus rapide, passez par mon mail : [email protected]
Cordialement
Excellent article. Il va beaucoup m’aider dans ma configuration de MDT. Complet et précis, il répond enfin à mon besoin actuel.