다중 변형 설정이 있는 프로비전 패키지 만들기

조직에서 관리하는 디바이스에 대한 다양한 구성 요구 사항이 있을 수 있습니다. 요구 사항이 다른 조직의 각 디바이스 그룹에 대한 별도의 프로비전 패키지를 만들 수 있습니다. 또는 여러 조건에서 작동하는 단일 프로비전 패키지인 다중 변형 프로비전 패키지를 만들 수 있습니다. 예를 들어 단일 프로비전 패키지에서는 프랑스어로 설정된 디바이스에 적용되는 사용자 지정 설정 집합과 일본어로 설정된 디바이스에 적용되는 사용자 지정 설정 집합을 정의할 수 있습니다.

다중 변형 설정을 프로비전하려면 Windows 구성 디자이너를 사용하여 모든 디바이스에 적용할 사용자 지정 설정이 포함된 프로비전 패키지를 만듭니다. 그런 다음 해당 프로젝트의 .XML 파일을 수동으로 편집하여 디바이스(대상)의 각 설정 집합을 정의합니다. 구성을 수신할 디바이스를 식별할 수 있도록 각 대상에 대해 값이 포함된 조건을 하나 이상 지정합니다. 마지막으로 각 대상에 대해 해당 디바이스에 적용할 사용자 지정 설정을 제공합니다.

먼저 대상을 정의하는 방법부터 살펴보겠습니다.

대상 정의

XML 파일에서 각 대상Id 또는 이름을 입력합니다. 각 대상은 하나 이상의 조건이 포함된 하나 이상의 TargetState를 통해 정의됩니다. Condition 요소는 조건과 지정된 값 사이의 일치 유형을 정의합니다.

대상은 둘 이상의 TargetState를 가질 수 있고 TargetState는 둘 이상의 조건을 가질 수 있습니다.

여러 대상 상태 및 조건이 있는 대상입니다.

다음 정보는 대상 정의에 대한 논리를 설명합니다.

  • 모든 Condition 요소가 TRUE이면 TargetState 는 TRUE입니다.

    모든 조건이 true이면 대상 상태가 true입니다.

  • TargetState 요소가 TRUE이면 Target은 TRUE이고 ID는 사용자 지정을 설정하는 데 사용할 수 있습니다.

    대상 상태 중 하나라도 true이면 대상은 true

조건

다음 표에서는 TargetState에 대한 Windows 클라이언트 프로비저닝에서 지원되는 조건을 보여줍니다.

조건 이름 조건 우선 순위 데스크톱 버전용 Windows 클라이언트 값 유형 값 설명
MNC P0 지원됨 자리 문자열 MNC(모바일 네트워크 코드) 값에 따른 대상 설정에 사용합니다.
MCC P0 지원됨 자리 문자열 MCC(모바일 국가 코드) 값에 따른 대상 설정에 사용합니다.
SPN P0 지원됨 문자열 SPN(서비스 공급자 이름) 값에 따른 대상 설정에 사용합니다.
PNN P0 지원됨 문자열 PLMN(공용 지상 모바일 네트워크) 네트워크 이름 값에 따른 대상 설정에 사용합니다.
GID1 P0 지원됨 자리 문자열 그룹 식별자(수준 1) 값에 따른 대상 설정에 사용합니다.
ICCID P0 지원됨 자리 문자열 ICCID(통합 서킷 카드 식별자) 값에 따른 대상 설정에 사용합니다.
Roaming P0 해당 없음 부울 로밍 지정에 사용합니다. 값을 1(로밍) 또는 0(로밍 아님)으로 설정합니다.
UICC P0 해당 없음 열거형 UICC(유니버설 통합 회로 카드) 상태를 지정하는 데 사용합니다. 값을 다음 중 하나로 설정합니다.


- 0 - Empty
- 1 - Ready
- 2 - Locked
UICCSLOT P0 해당 없음 자리 문자열 UICC 슬롯을 지정하는 데 사용합니다. 값을 다음 중 하나로 설정합니다.


- 0 - 슬롯 0
- 1 - 슬롯 1
ProcessorType P1 지원됨 문자열 프로세서 종류에 따른 대상 설정에 사용합니다.
ProcessorName P1 지원됨 문자열 프로세서 이름에 따른 대상 설정에 사용합니다.
AoAc("Always On, Always Connected") P1 지원됨 부울 값을 0(false) 또는 1(true)로 설정합니다. 이 조건이 TRUE이면 시스템에서 S0 저전원 유휴 모델을 지원합니다.
PowerPlatformRole P1 지원됨 열거형 기본 전원 관리 프로필을 나타냅니다. POWER_PLATFORM_ROLE 열거형을 기반으로 값을 설정합니다.
SocIdentifier P1 지원됨 문자열 을 사용하여 Soc 식별자를 기반으로 설정을 대상으로 지정합니다. 25301 OS 빌드 버전부터 사용할 수 있습니다.
Architecture P1 지원됨 문자열 PROCESSOR_ARCHITECTURE 환경 변수를 찾습니다.
Server P1 지원됨 부울 값을 0(false) 또는 1(true)로 설정하여 서버를 식별합니다.
지역 P1 지원됨 열거형 ISO 3166-1 alpha-2에 따른 2자리 알파 ISO 코드를 사용하여 국가/지역 기반의 대상 설정에 사용합니다.
Lang P1 지원됨 열거형 2자리 ISO 639 alpha-2 코드를 사용하여 언어 코드에 따른 대상 설정에 사용합니다.

Windows 클라이언트에서 지원되는 일치 형식은 다음과 같습니다.

일치 유형 구문
Straight 일치 일치 유형이 있는 그대로 지정됨 <Condition Name="ProcessorName" Value="Barton" />
정규식(Regex) 일치 일치 유형에 "Pattern:" 접두사가 붙음 <Condition Name="ProcessorName" Value="Pattern:. 셀러론." />
숫자 범위 일치 일치 유형에 "!Range:" 접두사가 붙음 <Condition Name="MNC" Value="!Range:400, 550" />

TargetState 우선 순위

프로비전 패키지 내에서 TargetState를 하나 이상 정의하여 디바이스 조건과 일치하는 디바이스에 설정을 적용할 수 있습니다. 프로비저닝 엔진이 각 TargetState를 평가할 때 둘 이상의 TargetState 가 현재 디바이스 조건에 맞을 수 있습니다. 설정이 적용되는 순서를 결정하기 위해 시스템은 모든 TargetState에 우선 순위를 할당합니다.

우선 순위가 낮은 TargetState와 일치하는 설정이 적용된 후 우선 순위가 높은 TargetState와 일치하는 설정이 적용됩니다. 다시 말해서 우선 순위가 높은 TargetState의 설정이 우선 순위가 낮은 TargetState의 설정을 덮어쓸 수 있습니다.

우선 순위가 동일한 여러 TargetState와 일치하는 설정은 프로비전 패키지에서 각 TargetState가 정의된 순서에 따라 적용됩니다.

TargetState 우선 순위는 조건의 우선 순위에 따라 할당됩니다(우선 순위에 대한 조건표 참조). 우선 순위 평가 규칙은 다음과 같습니다.

  1. P0 조건이 있는TargetState는 P0 조건이 없는 TargetState보다 높습니다.

  2. P0 및 P1 조건이 모두 있는 TargetState는 P0 조건만 있는 TargetState보다 높습니다.

  3. 일치하는 P1 조건의 수에 관계없이 일치하는 P0 조건이 더 많은 TargetState는 일치하는 P0 조건이 더 적은 TargetState보다 높습니다.

  4. 일치하는 P0 조건의 수가 같으면 가장 일치하는 P1 조건이 있는 TargetState의 우선 순위가 더 높습니다.

  5. P0 및 P1 조건이 동일하게 일치하면 일치하는 총 조건 수가 가장 많은 TargetState에 가장 높은 우선 순위가 부여됩니다.

다중 변형 설정이 있는 프로비전 패키지 만들기

다중 변형 기능으로 프로비전 패키지를 만들려면 다음 단계를 따릅니다.

  1. 프로비전 패키지를 빌드하고 특정 조건에서 적용할 사용자 지정을 구성합니다. 자세한 내용은 프로비전 패키지 만들기를 참조하세요.

  2. 설정을 구성한 후 프로젝트를 저장합니다.

  3. 프로젝트 폴더를 열고 customizations.xml 파일을 아무 로컬 위치로 복사합니다.

  4. XML 또는 텍스트 편집기를 사용하여 customizations.xml 파일을 엽니다.

    customizations.xml 파일은 패키지 메타 데이터(패키지 소유자 및 순위 포함)와 프로비저닝 패키지를 만들 때 구성한 설정을 포함합니다. 파일의 Customizations 노드에는 사용자 지정 설정이 들어 있는 Common 섹션이 있습니다.

    다음 예는 샘플 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. customizations.xml 파일을 편집하여 다중 변형 설정을 처리할 조건을 설명하는 Targets 섹션을 생성합니다.

    다음 예는 ProcessorName, ProcessorType, MCCMNC를 포함하도록 수정된 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>
         <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. customizations.xml 파일에서 사용자 지정할 설정에 대한 Variant 섹션을 만듭니다. 이렇게 하려면 다음을 수행합니다.

    a. 자식 TargetRefs 요소를 정의합니다.

    b. TargetRefs 요소 내에서 TargetRef 요소를 정의합니다. 사용자 지정 설정에 적용할 각 Id에 대해 여러 개의 TargetRef 요소를 정의할 수 있습니다.

    c. 호환 설정을 Common 섹션에서 Variant 섹션으로 이동합니다.

    TargetRef 요소 중 하나라도 Target과 일치하면 Variant의 모든 설정이 적용됩니다.

    참고

    여러 개의 Variant 섹션을 정의할 수 있습니다. Common 섹션의 설정은 모든 트리거 이벤트에서 무조건 적용됩니다.

    다음 예는 변형에 대한 조건이 충족될 경우 적용되는 Variant 섹션과 이동된 설정을 포함하도록 업데이트된 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>
         </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. 업데이트된 customizations.xml 파일을 저장하고 이 업데이트된 파일의 경로를 기록합니다. 이 경로는 다음 단계에 대한 값 중 하나로 필요합니다.

  8. 업데이트된 customizations.xml을 사용하여 프로비저닝 패키지를 만들려면 Windows 구성 디자이너 명령줄 인터페이스를 사용합니다.

    예를 들면 다음과 같습니다.

    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"
    

이 예에서는 StoreFile이 필요한 Windows 버전에 대한 패키지를 만드는 데 사용되는 설정 저장소의 위치에 해당됩니다.

참고

이 단계에서 만든 프로비저닝 패키지에는 다중 변형 설정이 포함됩니다. 이 패키지를 Windows 장치에 적용할 수 있는 독립 실행형 패키지로 사용하거나 다른 프로젝트를 시작할 때 바탕으로 사용할 수 있습니다.

프로비전을 트리거하는 이벤트

Windows 클라이언트 디바이스에 다변량 프로비저닝 패키지를 설치할 때 프로비전 엔진은 모든 이벤트에서 일치하는 조건 설정을 적용하고 프로비저닝을 트리거합니다.

다음 이벤트는 Windows 클라이언트 디바이스에서 프로비저닝을 트리거합니다.

Event 데스크톱 버전용 Windows 클라이언트
시스템 부팅 지원됨
운영 체제 업데이트 예정
장치가 처음으로 실행되는 동안 패키지 설치 지원됨
SIM 감지 또는 업데이트 지원됨
런타임에 패키지 설치 지원됨
검색된 로밍 지원되지 않음