Criar um pacote de provisionamento com configurações multivariadas
Em sua organização, você pode ter requisitos de configuração diferentes para dispositivos que você gerencia. Você pode criar pacotes de provisionamento separados para cada grupo de dispositivos em sua organização que possuem requisitos diferentes. Ou, você pode criar um pacote de provisionamento multivariado, um pacote de provisionamento único que pode funcionar para múltiplas condições. Por exemplo, num único pacote de aprovisionamento, pode definir um conjunto de definições de personalização que se aplicam a dispositivos configurados para francês e um conjunto diferente de definições de personalização para dispositivos configurados para japonês.
Para provisionar configurações multivariadas, use seu Designer de Configuração do Windows para criar um pacote de provisionamento que contém todas as configurações de personalização que você deseja aplicar a qualquer um de seus dispositivos. Em seguida, você edita manualmente o arquivo .XML desse projeto para definir cada conjunto de dispositivos (um Destino). Para cada Destino, você especifica pelo menos uma Condição com um valor, que identifica os dispositivos que receberão a configuração. Por fim, para cada Destino, você fornece as configurações de personalização a serem aplicadas nesses dispositivos.
Vamos começar aprendendo como definir um Destino.
Target
No arquivo XML, você deve fornecer um Id ou nome amigável para cada Destino. Cada Destino é definido por pelo menos um TargetState, que contém pelo menos uma Condição. Um elemento Condição define o tipo correspondente entre a condição e o valor especificado.
Um Destino pode ter mais de um TargetState, e um TargetState pode ter mais de uma Condição.
As seguintes informações descrevem a lógica da definição de destino:
Quando todos os elementos da Condição são VERDADEIRO, TargetState é VERDADEIRO:
Se algum dos elementos TargetState for TRUE, Target é TRUE e o ID pode ser utilizado para definir personalizações:
Condições
A tabela seguinte mostra as condições suportadas no aprovisionamento de clientes do Windows para um TargetState:
Nome da condição | Prioridade da condição | Cliente Windows para edições de ambiente de trabalho | Tipo de valor | Descrição do valor |
---|---|---|---|---|
MNC | P0 | Com suporte | Cadeia de caracteres de dígito | Use para direcionar as configurações com base no valor MNC (Mobile Network Code). |
MCC | P0 | Com suporte | Cadeia de caracteres de dígito | Use para direcionar as configurações com base no valor MCC (Mobile Country Code). |
SPN | P0 | Com suporte | String | Use para direcionar as configurações com base no valor SPN (nome do provedor de serviços). |
PNN | P0 | Com suporte | String | Use para direcionar as configurações com base no valor de nome de rede PLMN (public land mobile network). |
GID1 | P0 | Com suporte | Cadeia de caracteres de dígito | Use para direcionar as configurações com base no valor de identificador de grupo (nível 1). |
ICCID | P0 | Com suporte | Cadeia de caracteres de dígito | Use para direcionar as configurações com base no valor ICCID (Integrated Circuit Card Identifier). |
Roaming | P0 | N/D | Booliano | Use para especificar o roaming. Defina o valor como 1 (roaming) ou 0 (sem sobreaplicação). |
UICC | P0 | N/D | Enumeração | Use para especificar o estado da Placa de Circuito Integrado Universal (UICC). Defina o valor para um destes valores: 0 - Vazio 1 - Pronto 2 - Bloqueado |
UICCSLOT | P0 | N/D | Cadeia de caracteres de dígito | Use para especificar o slot UICC. Defina o valor um destes valores: 0 - Bloco 0 1 - Ranhura 1 |
ProcessorType | P1 | Com suporte | String | Use para direcionar as configurações com base no tipo de processador. |
ProcessorName | P1 | Com suporte | String | Use para direcionar as configurações com base no nome do processador. |
AoAc ("Sempre ligado, Sempre conectado") | P1 | Com suporte | Booliano | Defina o valor para 0 (falso) ou 1 (verdadeiro). Se essa condição for VERDADEIRO, o sistema é compatível com o modelo ocioso de baixo consumo de energia S0. |
PowerPlatformRole | P1 | Com suporte | Enumeração | Indica o perfil de gerenciamento de energia preferencial. Defina o valor com base na Enumeração de POWER_PLATFORM_ROLE. |
SocIdentifier | P1 | Com suporte | String | Utilize para definir o destino com base no Identificador soc. Disponível desde a versão de compilação do SO 25301. |
Arquitetura | P1 | Com suporte | String | Corresponde a variável de ambiente PROCESSOR_ARCHITECTURE. |
Servidor | P1 | Com suporte | Booliano | Defina o valor como 0 (falso) ou 1 (verdadeiro) para identificar um servidor. |
Região | P1 | Com suporte | Enumeração | Utilize para definir o destino com base na região, utilizando o código ISO alfa de dois dígitos por ISO 3166-1 alfa-2. |
Idioma | P1 | Com suporte | Enumeração | Utilize para definir o destino com base no código de idioma, utilizando o código ISO 639 alfa-2 de dois dígitos. |
Os tipos de correspondência suportados no cliente Windows são:
Tipo de correspondência | Sintaxe | Exemplo |
---|---|---|
Correspondência direta | O tipo de correspondência é especificado como está | <Condition Name="ProcessorName" Value="Barton" /> |
Correspondência de expressões regulares (Regex) | O tipo correspondente tem o prefixo Pattern: |
<Condition Name="ProcessorName" Value="Pattern:.*Celeron.*" /> |
Correspondência de intervalo numérico | O tipo correspondente tem o prefixo !Range: |
<Condition Name="MNC" Value="!Range:400, 550" /> |
Prioridades de TargetState
É possível definir mais de um TargetState dentro de um pacote de provisionamento para aplicar aos dispositivos de configurações correspondentes a condições de dispositivos. Quando o motor de aprovisionamento avalia cada TargetState, mais do que um TargetState pode ajustar-se às condições atuais do dispositivo. Para determinar a ordem na qual as configurações são aplicadas, o sistema atribui uma prioridade a cada TargetState.
Uma configuração correspondente a TargetState com uma prioridade mais baixa é aplicada antes da configuração correspondente a um TargetState de prioridade mais alta. Isso significa que uma configuração para o TargetState com a prioridade mais alta pode substituir uma configuração para o TargetState com a prioridade mais baixa.
As configurações correspondentes a mais de um TargetState com prioridade igual são aplicadas de acordo com a ordem em que cada TargetState definido no pacote de provisionamento.
A prioridade do TargetState é atribuída com base na prioridade da condição (consulte a Tabela de condições em busca de prioridades). As regras de avaliação de prioridade serão como as seguintes:
- Um TargetState com condições P0 é maior que um TargetState sem condições P0.
- Um TargetState com condições P0 e P1 é maior que um TargetState com apenas a condição P0.
- Um TargetState com um número maior de condições de P0 correspondentes é maior do que TargetState com menos condições de P0 correspondentes, independentemente do número de condições de P1 correspondentes.
- Se o número de condições P0 correspondidas for equivalente, o TargetState com as condições P1 mais correspondidas tem uma prioridade mais elevada.
- Se as condições de P0 e P1 forem igualmente atendidas, então o TargetState com o maior número total de condições correspondentes tem prioridade mais alta.
Criar um pacote de provisionamento com configurações multivariadas
Siga estas etapas para criar um pacote de provisionamento com funcionalidades multivariadas.
Compilar um pacote de provisionamento e configurar as personalizações que você deseja aplicar durante determinadas condições. Para obter mais informações, consulte Criar um pacote de provisionamento.
Depois de configurar as definições, guarde o projeto.
Abra a pasta do projeto e copie o arquivo customizations.xml para qualquer localização local.
Use um editor de texto ou XML para abrir o arquivo customizations.xml.
O arquivo customizations.xml mantém os metadados do pacote (incluindo o proprietário e a classificação do pacote) e as configurações que você configurou quando criou seu pacote de provisionamento. O nó Personalizações do arquivo contém uma seção Comum, que contém as configurações de personalização.
O exemplo a seguir mostra o conteúdo de um arquivo customizations.xml de exemplo.
<?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>
Edite o ficheiro customizations.xml para criar uma secção Destinos para descrever as condições que processam as suas definições multivariantas.
O exemplo seguinte mostra o customizations.xml, que é modificado para incluir várias condições, incluindo 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>
No arquivo customizations.xml, crie uma seção Variant para as configurações que você precisa personalizar. Para fazer isso:
a. Defina um elemento filho TargetRefs. b. Dentro do elemento TargetRefs, defina um elemento TargetRef. É possível definir vários elementos TargetRef para cada Id que você precisa aplicar a configurações personalizadas. c. Mova configurações compatíveis da seção Common para a seção Variant.
Se qualquer um dos elementos TargetRef corresponder a Destino, todas as configurações de Variante serão aplicadas.
Observação
Você pode definir várias seções Variante. As configurações residentes na seção Comum são aplicadas incondicionalmente a todos os eventos de disparo.
O exemplo seguinte mostra o customizations.xml atualizado para incluir uma secção Variante e as definições movidas que são aplicadas se as condições da variante forem cumpridas.
<?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>
Salve o arquivo customizations.xml atualizado e anote o caminho do arquivo atualizado. Precisará do caminho como um dos valores para o próximo passo.
Use a interface de linha de comando do Designer de Configuração do Windows para criar um pacote de provisionamento usando o arquivo customizations.xml atualizado.
Por exemplo:
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"
Neste exemplo, o StoreFile corresponde à localização do arquivo de definições que é utilizado para criar o pacote para a edição necessária do Windows.
Observação
O pacote de aprovisionamento criado durante este passo contém as definições multivariantas. É possível usar esse pacote como um pacote autônomo que pode aplicar a um dispositivo Windows ou usá-lo como base ao iniciar outro projeto.
Eventos que disparam provisionamento
Quando instala o pacote de aprovisionamento multivarianto num dispositivo cliente Windows, o motor de aprovisionamento aplica as definições de condição correspondentes em todos os eventos e aciona o aprovisionamento.
Os seguintes eventos acionam o aprovisionamento em dispositivos cliente Windows:
Evento | Cliente Windows para edições de ambiente de trabalho |
---|---|
Inicialização do sistema | Com suporte |
Atualização do sistema operacional | Planejado |
Instalação do pacote durante a experiência de primeira execução do dispositivo | Com suporte |
Detecção de presença ou atualização de SIM | Com suporte |
Instalação do pacote em tempo de execução | Com suporte |
Roaming detectado | Sem suporte |