Creare un pacchetto di provisioning con impostazioni per più varianti

I dispositivi che gestisci nella tua organizzazione potrebbero presentare requisiti di configurazione diversi. In tal caso, puoi creare pacchetti di provisioning separati per ogni gruppo di dispositivi dell'organizzazione. In alternativa, puoi creare pacchetti di provisioning per più varianti, vale a dire un singolo pacchetto di provisioning che può soddisfare più condizioni. In un singolo pacchetto di provisioning, ad esempio, puoi definire un set di impostazioni di personalizzazione che verrà applicato a dispositivi impostati per la lingua francese e un set diverso di impostazioni di personalizzazione per dispositivi impostati per la lingua giapponese.

Per effettuare il provisioning delle impostazioni per più varianti, usa Progettazione immagine e configurazione di Windows per creare un pacchetto di provisioning contenente tutte le impostazioni di personalizzazione che desideri applicare a un dispositivo. Successivamente, modifica manualmente il file .XML per il progetto in questione per definire ogni set di dispositivi (Target). Per ogni Target, specifica almeno un oggetto Condition con un valore, che identifica i dispositivi che ricevono la configurazione. Infine, per ogni Target, specifica le impostazioni di personalizzazione da applicare a tali dispositivi.

Iniziamo imparando come definire un oggetto Target.

Definire una destinazione

Nel file XML fornisci un Id, o un nome descrittivo, per ogni Target. Ogni Target è definito da almeno un oggetto TargetState contenente almeno un oggetto Condition. Un elemento Condition definisce il tipo corrispondente tra la condizione e il valore specificato.

Un oggetto Target può disporre di più TargetState e un oggetto TargetState può disporre di più Condition.

Destinazione con più stati e condizioni di destinazione.

Le informazioni seguenti descrivono la logica per la definizione di destinazione:

  • Quando tutti gli elementi Condition sono TRUE, TargetState è TRUE:

    Lo stato di destinazione è true quando tutte le condizioni sono vere.

  • Se uno degli elementi TargetState è TRUE, Target è TRUE e l'ID può essere usato per impostare le personalizzazioni:

    Target è True se ogni stato di Target è True

Condizioni

La tabella seguente illustra le condizioni supportate nel provisioning client Windows per un oggetto TargetState:

Nome della condizione Priorità della condizione Client Windows per le edizioni desktop Tipo di valore Descrizione del valore
MNC P0 Supportato Stringa di cifre Utilizzare per fare riferimento alle impostazioni in base al valore MNC (Mobile Network Code).
MCC P0 Supportato Stringa di cifre Utilizzare per fare riferimento alle impostazioni in base al valore MCC (Mobile Country Code).
SPN P0 Supportata Stringa Utilizzare per fare riferimento alle impostazioni in base al valore SPN (Service Provider Name).
PNN P0 Supportata Stringa Utilizzare per fare riferimento alle impostazioni in base al valore PLMN (public land mobile network).
GID1 P0 Supportato Stringa di cifre Utilizzare fare riferimento alle impostazioni in base al valore Identificatore gruppo (livello 1).
ICCID P0 Supportato Stringa di cifre Utilizzare per fare riferimento alle impostazioni in base al valore ICCID (Integrated Circuit Card Identifier)
Roaming P0 N/D Booleano Utilizzare per specificare il roaming. Impostare il valore su 1 (roaming) o 0 (non in roaming).
UICC P0 N/D Enumerazione Utilizzare per specificare lo stato della scheda UICC (Universal Integrated Circuit Card). Impostare il valore su uno dei valori seguenti:


- 0 - Vuoto
- 1 - Pronto
- 2 - Bloccato
UICCSLOT P0 N/D Stringa di cifre Utilizzare per specificare lo slot UICC. Impostare il valore uno dei valori seguenti:


- 0 - Slot 0
- 1 - Slot 1
ProcessorType P1 Supportata Stringa Utilizzare per fare riferimento alle impostazione in base al tipo di processore.
ProcessorName P1 Supportata Stringa Utilizzare per fare riferimento alle impostazione in base al nome del processore.
AoAc ("Always On/Always Connected") P1 Supportata Booleano Impostare il valore su 0 (False) o 1 (True). Se questa condizione è TRUE, il sistema supporta il modello S0 inattivo a basso consumo.
PowerPlatformRole P1 Supportata Enumerazione Indica il profilo risparmio energia preferito. Impostare il valore in base all'enumerazione POWER_PLATFORM_ROLE.
SocIdentifier P1 Supportata Stringa Usare per impostare come destinazione le impostazioni in base all'identificatore Soc. Disponibile dalla versione di compilazione del sistema operativo 25301.
Architecture P1 Supportata Stringa Corrisponde alla variabile di ambiente PROCESSOR_ARCHITECTURE.
Server P1 Supportata Booleano Impostare il valore su 0 (False) o 1 (True) per identificare un server.
Region P1 Supportata Enumerazione Utilizzare per fare riferimento alle impostazioni in base al paese/area geografica, tramite il codice ISO alfa a 2 cifre ISO 3166-1 alpha-2.
Lang P1 Supportata Enumerazione Utilizzare per fare riferimento alle impostazioni in base al codice di lingua, tramite il codice ISO 639 alpha-2 a 2 cifre.

I tipi corrispondenti supportati nel client Windows sono:

Tipo corrispondente Sintassi Esempio
Corrispondenza diretta Il tipo di corrispondenza è specificato così com'è <Condition Name="ProcessorName" Value="Barton" />
Corrispondenza dell'espressione regolare (Regex) Il tipo di corrispondenza è preceduto dal prefisso "Pattern:" <Condition Name="ProcessorName" Value="Pattern:. Sedano. />
Corrispondenza intervallo numerico Il tipo di corrispondenza è preceduto dal prefisso "!Range:" <Condition Name="MNC" Value="!Range:400, 550" />

Priorità TargetState

È possibile definire più elementi TargetState all'interno di un pacchetto di provisioning per applicare le impostazioni ai dispositivi che corrispondono alle condizioni del dispositivo. Quando il motore di provisioning valuta ogni TargetState, più di un TargetState può adattarsi alle condizioni correnti del dispositivo. Per determinare l'ordine in cui vengono applicate le impostazioni, il sistema assegna una priorità a ogni elemento TargetState.

Un'impostazione che corrisponde a un elemento TargetState con una priorità inferiore viene applicata prima della impostazione corrispondente a un elemento TargetState con una priorità superiore. Pertanto, un'impostazione per l'elemento TargetState con la priorità più alta può sovrascrivere un'impostazione per l'elemento TargetState con la priorità più bassa.

Le impostazioni che corrispondono a un elemento TargetState con uguale priorità vengono applicate in base all'ordine definito per ciascun elemento TargetState nel pacchetto di provisioning.

La priorità TargetState viene assegnata in base alla priorità della condizione (vedi la tabella delle condizioni per le priorità). Le regole di valutazione della priorità sono indicate di seguito:

  1. Un elemento TargetState con condizioni P0 è superiore a un elemento TargetState senza condizioni P0.

  2. Un elemento TargetState con le condizioni P0 e P1 è superiore a un elemento TargetState con solo condizioni P0.

  3. Un elemento TargetState con un numero maggiore di condizioni P0 soddisfatte è superiore a un elemento TargetState con meno condizioni P0 soddisfatte, indipendentemente dal numero di condizioni P1 soddisfatte.

  4. Se il numero di condizioni P0 soddisfatte è equivalente, l'elemento TargetState con la maggior parte delle condizioni P1 soddisfatte ha priorità più alta.

  5. Se le condizioni P0 e P1 sono ugualmente soddisfatte, l'elemento TargetState con il numero totale più grande di condizioni soddisfatte ha la priorità più alta.

Creare un pacchetto di provisioning con impostazioni per più varianti

Per creare un pacchetto di provisioning con funzionalità per più varianti, attenersi ai seguenti passaggi.

  1. Compila un pacchetto di provisioning e configura le personalizzazioni che desideri applicare durante determinate condizioni. Per altre informazioni, vedi Creare un pacchetto di provisioning.

  2. Dopo aver configurato le impostazioni, salvare il progetto.

  3. Apri la cartella del progetto e copia il file customizations.xml in un qualsiasi percorso locale.

  4. Utilizza un editor XML o un editor di testo per aprire il file customizations.xml.

    Il file customizations.xml contiene i metadati del pacchetto (tra cui il proprietario e la classificazione) e le impostazioni configurate al momento della creazione del pacchetto di provisioning. Il nodo Customizations del file contiene una sezione Common con le impostazioni di personalizzazione.

    L'esempio seguente mostra i contenuti di un file customizations.xml di esempio.

    <?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. Modifica il file customizations.xml per creare una sezione Targets per descrivere le condizioni che saranno gestite dalle impostazioni per più varianti.

    L'esempio seguente mostra il file customizations.xml, modificato in modo da includere diverse condizioni, tra cui ProcessorName, ProcessorType, MCC e 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. Nel file customizations.xml, creare una sezione Variant per le impostazioni che è necessario personalizzare. A tale scopo, effettuare le seguenti operazioni:

    a. Definire un elemento TargetRefs figlio.

    b. All'interno dell'elemento TargetRefs, definire un elemento TargetRef. È possibile definire più elementi TargetRef per ciascun ID che si desidera applicare alle impostazioni personalizzate.

    c. Spostare le impostazioni conformi dalla sezione Common alla sezione Variant.

    Se uno degli elementi TargetRef corrisponde all'elemento Target, tutte le impostazioni in Variant sono applicate.

    Nota

    È possibile definire più sezioni Variant. Le impostazioni che si trovano nella sezione Common vengono applicate in maniera incondizionata a ogni evento di origine.

    L'esempio seguente mostra il file customizations.xml aggiornato in modo da includere la sezione Variant, e le impostazioni spostate che saranno applicate se vengono soddisfatte le condizioni per la variante

    <?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. Salvare il file customizations.xml aggiornato e annotarne il percorso in questo file aggiornato. Il percorso sarà uno dei valori necessari nel passaggio successivo.

  8. Utilizzare l'interfaccia della guida di comando di Progettazione immagini e configurazione di Windows per creare un pacchetto di provisioning mediante il file ustomizations.xml aggiornato.

    Ad esempio:

    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"
    

In questo esempio, StoreFile corrisponde al percorso dell'archivio impostazioni che sarà utilizzato per creare il pacchetto per l'edizione di Windows richiesta.

Nota

Il pacchetto di provisioning creato durante questo passaggio conterrà le impostazioni per più varianti. È possibile utilizzare questo pacchetto come pacchetto autonomo che è possibile applicare a un dispositivo Windows o come base quando si avvia un altro progetto.

Eventi che generano provisioning

Quando si installa il pacchetto di provisioning multivariante in un dispositivo client Windows, il motore di provisioning applica le impostazioni delle condizioni corrispondenti a ogni evento e attiva il provisioning.

Gli eventi seguenti attivano il provisioning nei dispositivi client Windows:

Evento Client Windows per le edizioni desktop
Avvio del sistema Supportato
Aggiornamento del sistema operativo Pianificato
Installazione del pacchetto durante la prima esperienza di esecuzione del dispositivo Supportato
Rilevamento della presenza della SIM o dell'aggiornamento Supportato
Installazione del pacchetto in fase di runtime Supportato
Roaming rilevato Non supportato