Compartir a través de


Crear un paquete de aprovisionamiento con una configuración multivariante

Es probable que tu organización tenga diferentes requisitos de configuración para los dispositivos que administras. Puedes crear paquetes de aprovisionamiento independientes para cada grupo de dispositivos de la organización que tienen distintos requisitos. O bien, puedes crear un paquete de aprovisionamiento multivariante, es decir, un único paquete de aprovisionamiento que pueda funcionar para varias condiciones. Por ejemplo, en un único paquete de aprovisionamiento, puede definir un conjunto de opciones de personalización que se aplican a los dispositivos configurados para francés y un conjunto diferente de opciones de personalización para los dispositivos configurados para japonés.

Para aprovisionar una configuración multivariante, usa la herramienta el Diseñador de configuraciones de Windows para crear un paquete de aprovisionamiento que contenga toda la configuración de personalización que quieres aplicar a cualquiera de tus dispositivos. A continuación, edita manualmente el archivo .XML de ese proyecto para definir cada conjunto de dispositivos (un elemento Target). Para cada elemento Target, puedes especificar al menos un elemento Condition con un valor, que identifica los dispositivos que van a recibir la configuración. Por último, para cada elemento Target, proporciona la configuración de personalización que se aplicará a tales dispositivos.

Empecemos por aprender a definir un elemento Target.

Target

En el archivo XML, proporciona un elemento Id, o el nombre descriptivo, para cada elemento Target. Cada elemento Target está definido por al menos un elemento TargetState que contiene un elemento Condition como mínimo. Un elemento Condition define el tipo de coincidencia entre la condición y el valor especificado.

Un elemento Target puede tener más de un elemento TargetState y un TargetState puede tener más de un elemento Condition.

Destino con varios estados y condiciones de destino.

En la siguiente información se describe la lógica de la definición de destino:

  • Cuando todos los elementos Condition son TRUE, TargetState es TRUE:

    El estado de destino es true cuando se cumplen todas las condiciones.

  • Si alguno de los elementos TargetState es TRUE, Target es TRUE y el identificador se puede usar para establecer personalizaciones:

    El destino es True si cualquier estado de destino es True

Condiciones

En la tabla siguiente se muestran las condiciones admitidas en el aprovisionamiento de cliente de Windows para un targetState:

Nombre de la condición Prioridad de la condición Cliente de Windows para ediciones de escritorio Tipo de valor Descripción de valor
MNC P0 Compatible Cadena de dígitos Se usa para orientar la configuración en función del valor del código de red móvil (MNC).
MCC P0 Compatible Cadena de dígitos Se usa para orientar la configuración en función del valor del código de país móvil (MCC).
SPN P0 Admitido Cadena Se usa para orientar la configuración en función del valor del nombre del proveedor de servicios (SPN).
PNN P0 Admitido Cadena Se usa para orientar la configuración en función del valor de nombre de red móvil terrestre pública (PLMN).
GID1 P0 Compatible Cadena de dígitos Se usa para orientar la configuración en función del valor de identificador de grupo (nivel 1).
ICCID P0 Compatible Cadena de dígitos Se usa para orientar la configuración en función del valor del identificador de tarjeta de circuito integrado (ICCID).
Itinerancia P0 N/A Booleano Se usa para especificar la itinerancia. Establezca el valor en 1 (itinerancia) o 0 (no móvil).
UICC P0 N/A Enumeración Se usa para especificar el estado de la tarjeta de circuito integrado universal (UICC). Establezca el valor en uno de estos valores:
0 - Vacío
1 - Listo
2 - Bloqueado
UICCSLOT P0 N/A Cadena de dígitos Se usa para especificar la ranura UICC. Establezca el valor uno de estos valores:
0 - Ranura 0
1 - Ranura 1
ProcessorType P1 Admitido Cadena Se usa para orientar la configuración en función del tipo de procesador.
ProcessorName P1 Admitido Cadena Se usa para orientar la configuración en función del nombre de procesador.
AoAc ("siempre activado o conectado") P1 Admitido Booleano Establece el valor en 0 (false) o 1 (true). Si esta condición es TRUE, el sistema admite el modelo de inactividad de bajo consumo S0.
PowerPlatformRole P1 Admitido Enumeración Indica el perfil de administración de energía preferido. Define el valor en función de la enumeración POWER_PLATFORM_ROLE.
SocIdentifier P1 Admitido Cadena Use para establecer como destino la configuración basada en el identificador de Soc. Disponible desde la versión de compilación del sistema operativo 25301.
Arquitectura P1 Admitido Cadena Coincide con la variable de entorno PROCESSOR_ARCHITECTURE.
Servidor P1 Admitido Booleano Establece el valor en 0 (false) o 1 (true) para identificar un servidor.
Region P1 Admitido Enumeración Use para establecer como destino la configuración basada en la región, utilizando el código ISO alfa de dos dígitos por ISO 3166-1 alfa-2.
Lang P1 Admitido Enumeración Use para establecer la configuración de destino en función del código de idioma, con el código ISO 639 alfa-2 de dos dígitos.

Los tipos coincidentes admitidos en el cliente de Windows son:

Tipos de coincidencia Sintaxis Ejemplo
Coincidencia directa El tipo de coincidencia se especifica tal como está <Condition Name="ProcessorName" Value="Barton" />
Coincidencia de expresiones regulares (Regex) El tipo coincidente tiene el prefijo Pattern: <Condition Name="ProcessorName" Value="Pattern:.*Celeron.*" />
Coincidencia de intervalo numérico El tipo coincidente tiene el prefijo !Range: <Condition Name="MNC" Value="!Range:400, 550" />

Prioridades TargetState

Puedes definir más de un elemento TargetState en un paquete de aprovisionamiento para aplicar la configuración a aquellos dispositivos que coinciden con las condiciones de dispositivo. Cuando el motor de aprovisionamiento evalúa cada TargetState, más de un TargetState puede ajustarse a las condiciones actuales del dispositivo. Para determinar el orden en el que se aplica la configuración, el sistema asigna una prioridad a cada elemento TargetState.

Se aplica una configuración que coincide con un elemento TargetState de menor prioridad antes que la configuración que coincide con un elemento TargetState de mayor prioridad. Esto significa que una configuración para el elemento TargetState de mayor prioridad puede sobrescribir una configuración para el elemento TargetState de menor prioridad.

La configuración que coincide con más de un elemento TargetState que tienen la misma prioridad se aplica según el orden de definición de cada elemento TargetState en el paquete de aprovisionamiento.

La prioridad de TargetState se asigna en función de la prioridad de la condición (consulta la tabla de condiciones para ver las prioridades). Las reglas de evaluación de prioridad son las siguientes:

  1. Un elemento TargetState con condiciones P0 tiene mayor prioridad que un elemento TargetState sin condiciones P0.
  2. Un elemento TargetState con condiciones P0 y P1 tiene mayor prioridad que un elemento TargetState con condiciones P0 solamente.
  3. Un elemento TargetState con un número superior de condiciones P0 coincidentes tiene mayor prioridad que un elemento TargetState con menos condiciones P0 coincidentes, independientemente del número de condiciones P1 coincidentes.
  4. Si el número de condiciones P0 coincidentes es equivalente, targetState con las condiciones P1 más coincidentes tiene mayor prioridad.
  5. Si el número de coincidencias de las condiciones P0 y P1 es el mismo, el elemento TargetState con el mayor número total de condiciones coincidentes tiene mayor prioridad.

Crear un paquete de aprovisionamiento con una configuración multivariante

Sigue estos pasos para crear un paquete de aprovisionamiento con capacidades multivariantes.

  1. Compila un paquete de aprovisionamiento y configura las personalizaciones que quieras aplicar en determinadas condiciones. Para obtener más información, consulta Crear un paquete de aprovisionamiento.

  2. Después de configurar los valores, guarde el proyecto.

  3. Abre la carpeta del proyecto y copia el archivo customizations.xml en cualquier ubicación local.

  4. Usa un editor de texto o XML para abrir el archivo customizations.xml.

    El archivo customizations.xml contiene los metadatos del paquete (incluido el propietario y el intervalo del paquete) y la configuración definida al crear el paquete de aprovisionamiento. El nodo Customizations del archivo contiene una sección Common que contiene la configuración de personalización.

    En el siguiente ejemplo se muestra el contenido de un archivo customizations.xml de ejemplo.

    <?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. Edite el archivo customizations.xml para crear una sección Destinos con el fin de describir las condiciones que controlan la configuración multivariante.

    En el ejemplo siguiente se muestra el customizations.xml, que se modifica para incluir varias condiciones, como ProcessorName, ProcessorType, MCC y 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. En el archivo customizations.xml, crea una sección Variant para la configuración que quieras personalizar. Para ello:

    a. Define un elemento TargetRefs secundario. b. Dentro del elemento TargetRefs, define un elemento TargetRef. Puedes definir varios elementos TargetRef para cada Id que necesites aplicar a la configuración personalizada. c. Desplaza la configuración compatible de la sección Common a la sección Variant.

    Si alguno de los elementos TargetRef coincide con el elemento Target, se aplicará toda la configuración de Variant.

    Nota

    Puedes definir varias secciones Variant. Las opciones de configuración incluidas en la sección Common se aplican incondicionalmente en cada evento de activación.

    En el ejemplo siguiente se muestra el customizations.xml actualizado para incluir una sección Variant y los valores movidos que se aplican si se cumplen las condiciones de 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. Guarda el archivo actualizado customizations.xml y anota la ruta de acceso al archivo actualizado. Necesitará la ruta de acceso como uno de los valores para el paso siguiente.

  8. Usa la interfaz de línea de comandos de Windows ICD para crear un paquete de aprovisionamiento con el archivo customizations.xml actualizado.

    Por ejemplo:

    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"
    

En este ejemplo, storeFile corresponde a la ubicación del almacén de configuración que se usa para crear el paquete para la edición de Windows necesaria.

Nota

El paquete de aprovisionamiento creado durante este paso contiene la configuración multivariante. Puedes usar este paquete como un paquete independiente que puedes aplicar a un dispositivo Windows o usarlo como base al iniciar otro proyecto.

Eventos que desencadenan el aprovisionamiento

Al instalar el paquete de aprovisionamiento multivariante en un dispositivo cliente Windows, el motor de aprovisionamiento aplica la configuración de condición coincidente en cada evento y desencadena el aprovisionamiento.

Los siguientes eventos desencadenan el aprovisionamiento en dispositivos cliente Windows:

Evento Cliente de Windows para ediciones de escritorio
Arranque del sistema Admitido
Actualización del sistema operativo Planeado
Instalación del paquete durante la primera ejecución del dispositivo Admitido
Detección de presencia o actualización de SIM Admitido
Instalación del paquete en tiempo de ejecución Admitido
Itinerancia detectada No se admite