Créer un package d’approvisionnement avec des paramètres à plusieurs variantes

Dans votre organisation, vous pouvez avoir des exigences de configuration différentes selon les périphériques que vous gérez. Vous pouvez créer des packages d’approvisionnement distincts pour chaque groupe de périphériques de votre organisation ayant des exigences différentes. Ou bien, vous pouvez créer des packages d'approvisionnement à plusieurs variantes et un package d'approvisionnement unique utilisable pour plusieurs paramètres. Par exemple, vous pouvez définir dans un même package d’approvisionnement un ensemble de paramètres de personnalisation applicable aux périphériques configurés pour le français et un autre ensemble de paramètres de personnalisation pour les appareils à configurer avec le japonais.

Pour configurer les paramètres à plusieurs variantes, vous utiliserez le Concepteur de configuration Windows afin de créer un package d’approvisionnement qui contient tous les paramètres de personnalisation que vous souhaitez appliquer à vos appareils. Ensuite, vous devez modifier manuellement le fichier .XML pour ce projet afin de définir chaque ensemble de périphériques (une Cible). Pour chaque Cible, vous spécifiez au moins une Condition avec une valeur, qui identifie les appareils qui recevront la configuration. Enfin, pour chaque Cible, vous indiquez les paramètres de personnalisation à appliquer à ces appareils.

Commençons par apprendre à définir une Cible.

Définir une cible

Dans le fichier XML, vous fournissez un Identifiant, ou nom convivial, pour chaque Cible. Chaque Cible est définie par au moins un TargetState qui contient au moins une Condition. Un élément Condition définit le type de correspondance entre la condition et la valeur spécifiée.

Une Cible peut avoir plusieurs TargetStateet un TargetState peut avoir plusieurs Conditions.

Cible avec plusieurs états et conditions cibles.

Les informations suivantes décrivent la logique de la définition cible :

  • Lorsque tous les éléments Condition ont la valeur TRUE, TargetState a la valeur TRUE :

    L’état cible est true lorsque toutes les conditions sont vraies.

  • Si l’un des éléments TargetState a la valeur TRUE, Target a la valeur TRUE et que l’ID peut être utilisé pour définir des personnalisations :

    La cible a la valeur True si n’importe quel état cible est défini sur True

Conditions

Le tableau suivant présente les conditions prises en charge dans l’approvisionnement du client Windows pour un TargetState :

Nom de condition Priorité de condition Client Windows pour les éditions de bureau Type de valeur Description de la valeur
MNC P0 Pris en charge Chaîne de chiffres Permet de cibler les paramètres reposant sur la valeur de code de réseau mobile (MNC).
MCC P0 Pris en charge Chaîne de chiffres Permet de cibler les paramètres reposant sur la valeur d'indicatif du pays de la station mobile (MCC).
SPN P0 Pris en charge Chaîne Permet de cibler les paramètres reposant sur la valeur de nom du fournisseur de services.
PNN P0 Pris en charge Chaîne Permet de cibler les paramètres reposant sur la valeur de nom du réseau mobile terrestre public (PLMN).
GID1 P0 Pris en charge Chaîne de chiffres Permet de cibler les paramètres reposant sur la valeur d'identificateur de groupe (niveau 1).
ICCID P0 Pris en charge Chaîne de chiffres Permet de cibler les paramètres reposant sur la valeur d'identificateur de carte à puce (ICCID).
Roaming P0 Non applicable Booléen Permet de spécifier l'itinérance. Définissez cette condition sur la valeur 1 (itinérance) ou 0 (aucune itinérance).
UICC P0 Non applicable Énumération Permet de spécifier l’état de la carte à puce UICC (Universal Integrated Circuit Card). Définissez la valeur sur l’une des valeurs suivantes :


- 0 - Vide
- 1 - Prêt
- 2 - Verrouillé
UICCSLOT P0 Non applicable Chaîne de chiffres Permet de spécifier l'emplacement UICC. Définissez la valeur de l’une des valeurs suivantes :


- 0 - Emplacement 0
- 1 - Emplacement 1
ProcessorType P1 Pris en charge Chaîne Permet de cibler les paramètres reposant sur le type du processeur.
ProcessorName P1 Pris en charge Chaîne Permet de cibler les paramètres reposant sur le nom du processeur.
AoAc (« Always On, Always Connected ») P1 Pris en charge Boolean Définissez la valeur sur 0 (false) ou 1 (true). Si cette condition est définie sur TRUE, le système prend en charge le modèle d’inactivité S0 faible consommation d’énergie.
PowerPlatformRole P1 Pris en charge Énumération Indique le profil de gestion de l'alimentation par défaut. Définissez cette condition sur une valeur reposant sur l'énumération POWER_PLATFORM_ROLE.
SocIdentifier P1 Pris en charge Chaîne Utilisez pour cibler les paramètres en fonction de l’identificateur Soc. Disponible depuis la version de build du système d’exploitation 25301.
Architecture P1 Pris en charge Chaîne Correspond à la variable d'environnement PROCESSOR_ARCHITECTURE.
Server P1 Pris en charge Boolean Définissez la valeur sur 0 (false) ou 1 (true) pour identifier un serveur.
Région P1 Pris en charge Énumération Permet de cibler les paramètres en fonction du pays ou de la région, à l’aide du code ISO alpha à 2 chiffres par ISO 3166-1 alpha-2.
Lang P1 Pris en charge Énumération Permet de cibler les paramètres en fonction du code de langue, à l’aide de 2 chiffres code ISO 639 alpha-2.

Les types correspondants pris en charge dans le client Windows sont les suivants :

Type de correspondance Syntaxe Exemple
Correspondance directe Le type de correspondance est spécifié tel quel. <Condition Name="ProcessorName" Value="Barton" />
Correspondance avec une expression régulière (Regex) Le type de correspondance présente le préfixe « Pattern: ». <Condition Name="ProcessorName » Value="Pattern :. Celeron. />
Correspondance de plage numérique Le type de correspondance présente le préfixe « !Range: ». <Condition Name="MNC" Value="!Range:400, 550" />

Priorités TargetState

Vous pouvez définir plusieurs éléments TargetState dans un package d'approvisionnement pour appliquer des paramètres aux appareils qui correspondent aux conditions d'appareil. Lorsque le moteur d’approvisionnement évalue chaque TargetState, plusieurs TargetState peuvent correspondre aux conditions actuelles de l’appareil. Pour déterminer l'ordre dans lequel les paramètres s'appliquent, le système affecte une priorité à chaque élément TargetState.

Un paramètre correspondant à un élément TargetState doté d'une priorité inférieure est appliqué avant le paramètre qui correspond à un élément TargetState présentant une priorité supérieure. Cela signifie qu’un paramètre pour TargetState avec un niveau de priorité plus élevé peut remplacer un paramètre du TargetState dont la priorité est plus faible.

Les paramètres qui correspondent à plusieurs éléments TargetState de même priorité sont appliqués dans l'ordre de définition de chaque élément TargetState dans le package d'approvisionnement.

La priorité TargetState est attribuée en fonction de la priorité de la condition (voir le Tableau des conditions sur les priorités). Les règles d’évaluation des priorités sont les suivantes :

  1. Un élément TargetState doté de conditions P0 est supérieur à un élément TargetState dépourvu de conditions P0.

  2. Un élément TargetState doté à la fois de conditions P0 et P1 est supérieur à un élément TargetState dépourvu de conditions P1.

  3. Un TargetState avec un nombre de correspondances de conditions P0 plus élevé est supérieur à un TargetState dont le nombre de correspondances de conditions P0 est moins élevé, quel que soit le nombre de conditions P1 mises en correspondance.

  4. En cas d'égalité au niveau du nombre de conditions P0 mis en correspondance, le TargetState doté du plus grand nombre de conditions P1 mises en correspondance aura la priorité plus élevée.

  5. Si les conditions P0 et P1 sont remplies de manière similaire, le TargetState disposant du plus grand nombre total de conditions mises en correspondance aura la priorité la plus élevée.

Créer un package d’approvisionnement avec des paramètres à plusieurs variantes

Pour créer un package d'approvisionnement avec des capacités de variantes multiples, procédez comme suit.

  1. Générez un package d'approvisionnement et configurez les personnalisations que vous avez besoin d'appliquer à certaines conditions. Pour plus d'informations, consultez l'article Créer un package d'approvisionnement.

  2. Une fois que vous avez configuré les paramètres, enregistrez le projet.

  3. Ouvrez le dossier du projet et copiez le fichier customizations.xml. dans n'importe quel emplacement local.

  4. Utilisez un éditeur de texte ou XML pour ouvrir le fichier customizations.xml.

    Le fichier customizations.xml contient les métadonnées de package (incluant le propriétaire et le rang du package) et les paramètres que vous avez configurés lorsque vous avez créé votre package d'approvisionnement. Le nœud Customizations du fichier comporte une section Common qui contient les paramètres de personnalisation.

    L'exemple ci-après présente le contenu d'un exemple de fichier customizations.xml.

    <?xml version="1.0" encoding="utf-8"?>
    <WindowsCustomizations>
     <PackageConfig xmlns="urn:schemas-Microsoft-com:Windows-ICD-Package-Config.v1.0">
       <ID>{6aaa4dfa-00d7-4aaa-8adf-73c6a7e2501e}</ID>
       <Name>My Provisioning Package</Name>
       <Version>1.0</Version>
       <OwnerType>OEM</OwnerType>
       <Rank>50</Rank>
     </PackageConfig>
     <Settings xmlns="urn:schemas-microsoft-com:windows-provisioning">
       <Customizations>
         <Common>
           <Policies>
             <AllowBrowser>0</AllowBrowser>
             <AllowCamera>0</AllowCamera>
             <AllowBluetooth>0</AllowBluetooth>
           </Policies>
           <HotSpot>
             <Enabled>0</Enabled>
           </HotSpot>
         </Common>
       </Customizations>
     </Settings>
    </WindowsCustomizations>
    
    
  5. Modifiez le fichier customizations.xml pour créer une section Targets pour décrire les conditions qui régiront vos paramètres à plusieurs variantes.

    L'exemple ci-après présente le fichier customizations.xml qui a été modifié de façon à inclure plusieurs conditions, telles que ProcessorName, ProcessorType, MCC et MNC.

    <?xml version="1.0" encoding="utf-8"?>
    <WindowsCustomizations>
     <PackageConfig xmlns="urn:schemas-Microsoft-com:Windows-ICD-Package-Config.v1.0">
       <ID>{6aaa4dfa-00d7-4aaa-8adf-73c6a7e2501e}</ID>
       <Name>My Provisioning Package</Name>
       <Version>1.0</Version>
       <OwnerType>OEM</OwnerType>
       <Rank>50</Rank>
     </PackageConfig>
     <Settings xmlns="urn:schemas-microsoft-com:windows-provisioning">
       <Customizations>
         <Common>
           <Policies>
             <AllowBrowser>0</AllowBrowser>
             <AllowCamera>0</AllowCamera>
             <AllowBluetooth>0</AllowBluetooth>
           </Policies>
           <HotSpot>
             <Enabled>0</Enabled>
           </HotSpot>
         </Common>
         <Targets>
           <Target Id="Unique target identifier for desktop">
             <TargetState>
               <Condition Name="ProcessorName" Value="Pattern:.*Celeron.*" />
               <Condition Name="ProcessorType" Value="Pattern:.*(I|i)ntel.*" />
             </TargetState>
             <TargetState>
               <Condition Name="ProcessorName" Value="Barton" />
               <Condition Name="ProcessorType" Value="Athlon MP" />
             </TargetState>
           </Target>
           <Target Id="Mobile target">
             <TargetState>
               <Condition Name="MCC" Value="Range:310, 320" />
               <Condition Name="MNC" Value="!Range:400, 550" />
             </TargetState>
           </Target>
         </Targets>
       </Customizations>
     </Settings>
    </WindowsCustomizations>
    
    
  6. Dans le fichier customizations.xml, créez une section Variant pour les paramètres que vous devez personnaliser. Pour effectuer cette opération, procédez comme suit :

    a. Définissez un élément TargetRefs enfant.

    b. Dans l'élément TargetRefs, définissez un élément TargetRef. Vous pouvez définir plusieurs éléments TargetRef pour chaque élément Id que vous souhaitez appliquer aux paramètres personnalisés.

    c. Déplacez les paramètres conformes de la section Common vers la section Variant.

    Si l'un des éléments TargetRef correspond à l'élément Target, tous les paramètres de la section Variant s'appliquent.

    Remarque

    Vous pouvez définir plusieurs sections Variant. Les paramètres qui se trouvent dans la section Common s'appliquent en toutes circonstances lors de chaque événement déclencheur.

    L'exemple qui suit présente le fichier customizations.xml mis à jour de façon à inclure une section Variant et les paramètres déplacés qui s'appliqueront si les conditions de la variante sont remplies.

    <?xml version="1.0" encoding="utf-8"?>
    <WindowsCustomizations>
     <PackageConfig xmlns="urn:schemas-Microsoft-com:Windows-ICD-Package-Config.v1.0">
       <ID>{6aaa4dfa-00d7-4aaa-8adf-73c6a7e2501e}</ID>
       <Name>My Provisioning Package</Name>
       <Version>1.0</Version>
       <OwnerType>OEM</OwnerType>
       <Rank>50</Rank>
     </PackageConfig>
     <Settings xmlns="urn:schemas-microsoft-com:windows-provisioning">
       <Customizations>
         <Common>
         </Common>
         <Targets>
           <Target Id="Unique target identifier for desktop">
             <TargetState>
               <Condition Name="ProcessorName" Value="Pattern:.*Celeron.*" />
               <Condition Name="ProcessorType" Value="Pattern:.*(I|i)ntel.*" />
             </TargetState>
             <TargetState>
               <Condition Name="ProcessorName" Value="Barton" />
               <Condition Name="ProcessorType" Value="Athlon MP" />
             </TargetState>
           </Target>
           <Target Id="Mobile target">
             <TargetState>
               <Condition Name="MCC" Value="Range:310, 320" />
               <Condition Name="MNC" Value="!Range:400, 550" />
             </TargetState>
           </Target>
         </Targets>
         <Variant>
           <TargetRefs>
             <TargetRef Id="Unique target identifier for desktop" />
             <TargetRef Id="Mobile target" />
           </TargetRefs>
           <Settings>
             <Policies>
               <AllowBrowser>1</AllowBrowser>
               <AllowCamera>1</AllowCamera>
               <AllowBluetooth>1</AllowBluetooth>
             </Policies>
             <HotSpot>
               <Enabled>1</Enabled>
             </HotSpot>
           </Settings>
         </Variant>
       </Customizations>
     </Settings>
    </WindowsCustomizations>
    
    
  7. Enregistrez le fichier customizations.xml mis à jour et notez le chemin d'accès à ce fichier. Vous aurez besoin du chemin de l'une des valeurs pour la prochaine étape.

  8. Utilisez l'interface de ligne de commande de Windows du Concepteur de configuration Windows pour créer un package d'approvisionnement à l'aide du fichier customizations.xml mis à jour.

    Par exemple :

    icd.exe /Build-ProvisioningPackage /CustomizationXML:"C:\CustomProject\customizations.xml" /PackagePath:"C:\CustomProject\output.ppkg" /StoreFile:C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Imaging and Configuration Designer\x86\Microsoft-Common-Provisioning.dat"
    

Dans cet exemple, l'élément StoreFile correspond à l'emplacement du magasin de paramètres qui servira à créer le package pour l'édition de Windows requise.

Remarque

Le package d'approvisionnement créé au cours de cette étape contiendra les paramètres à plusieurs variantes. Vous pouvez utiliser ce package sous la forme d'un package autonome applicable à un appareil Windows, ou bien l'utiliser comme point de départ pour un autre projet.

Événements qui déclenchent l'approvisionnement

Lorsque vous installez le package d’approvisionnement multivariant sur un appareil client Windows, le moteur d’approvisionnement applique les paramètres de condition correspondants à chaque événement et déclenche l’approvisionnement.

Les événements suivants déclenchent l’approvisionnement sur les appareils clients Windows :

Événement Client Windows pour les éditions de bureau
Démarrage du système Pris en charge
Mise à jour du système d'exploitation Planifié
Installation de package durant la phase d'introduction de l'interface logicielle lors de la première utilisation de l'appareil Pris en charge
Détection de présence ou de mise à jour d'une carte SIM Pris en charge
Installation de package au moment de l'exécution Pris en charge
Détection d'itinérance Non pris en charge