In this blog I will be going through the process of creating provisioning package using Windows Imaging and Configuration Designer tool. The file format used for this type of package is ppkg and is very easy to deploy on Windows 10 systems using various ways.

What is Provisioning Package

A Provisioning package (with extension ppkg) is basically a configuration settings. You can easily create and configure a Windows 10 device without having to re-image to reinstall OS over it.

This comes as a benefit of easily configuring the devices without wasting any time, and service desk team and other tools can utilize to deploy the ppkg file at your own convenience. Provisioning Package can be created through Windows Imaging and Configuration Designer (ICD) Tool.

What is Windows Configuration Designer

Windows Configuration Designer is a tool to create & configure provisioning packages. WCD comes with benefits such as quickly configuring the devices without having any network connectivity. Saving time and avoiding installing new image on device.

There are 2 ways to get Windows Configuration Designer.

  1. This comes as a part of Windows Assessment and Deployment kit (ADK) for Windows 10
  2. Install it through Microsoft Store App

Create Provisioning Package

Launch Windows Imaging and Configuration Designer on a system where ADK for Windows 10 is installed.

CreateProvisioningPackage 01

Once we launch WCD, we can see multiple options of creating the package for different devices, as we are going to create the provisioning package for Windows 10, lets select Provision desktop devices.

CreateProvisioningPackage 02

This will ask to create a new project, specify the project name, lets use a sensible name as I am going to create a package which renames the hostname and joins the domain, I am using the name RenameDevice-JoinDomain and click Finish.

CreateProvisioningPackage 03

Under Set up device page, we can see the option of specifying the device name. We also have option to Switch to advanced editor which opens a whole new world of thousands of options we specify and customize. To keep it simple, I won’t be going demonstrating this in this blog

Device name consists of 15 characters. This page gives us 2 options, examples as follows:

  1. Contoso-%SERIAL% = We will get 15 digits of hostname starting with initial 8 characters as “Contoso-“ and remaining 7 characters will be serial number of device (last 7 characters will be used in this case)
  2. Fabrikam-%RAND:5% = It will consists of 9 initial characters as “Fabrikam-“ and remaining 6 characters will be random number.
CreateProvisioningPackage 04

We are going to use the naming convention as Desktop-%SERIAL%. Click on Set up network.

Under Set up network, we have option for Connect devices to a Wi-Fi network, as we are not configuring this option, I have toggled the switch to Off. Click Account management.

CreateProvisioningPackage 05

Under Account management, we have several options such as Enroll into Active Directory, Enroll in Azure AD, Local Admin. As I am going to show you domain joining process, I will go with Enroll into Active Directory option.

CreateProvisioningPackage 06

Specify Domain name, User name, User Password who has the privilege to join a device to the domain.

We have option for creating local administrator account as well, I have provided the User name as WCD Admin and password assigned to it.

Click on Finish, verify the settings we have specified and click on Create.

CreateProvisioningPackage 07

Package will be created under the location which was specified while creating project.

Login to any workstation which is part of workgroup, you can run following command to check the serial number of the system.

Wmic bios get serial number
wmic bios get serial number

Copy the RenameDevice-JoinDomain.ppkg under c:\new folder. Run the package, which will show Is this package from a source you trust ? Click on Yes, add it to continue the process.

CreateProvisioningPackage 09

We can use dism.exe tool to inject the ppkg package as well:

DISM.exe /Add-ProvisioningPackage /PackagePath:<package_path> [/CatalogPath:<path>]

Or, powershell command can be used:

Install-ProvisioningPackage -PackagePath "c:\new folder\RenameDevice-JoinDomain.ppkg"

System will go through restart phase with resetting the PC (you won’t loose any data, as we have specified “Remove pre-installed software” option on “set up device” page it will go through reset the PC option to uninstall pre-installed apps) processing all the configuration settings specified under ppkg file.

Verify the deployment status of ppkg file

Once we login to the system, we can verify the Local user admin account created, system name renamed and joined to the domain.

CreateProvisioningPackage 10

We can also verify through Event viewer.

Navigate to Event Viewer > Applications and Services Logs > Microsoft > Windows > Provisioning-Diagnostics-Provider > Admin

CreateProvisioningPackage 11

Verify Domain joining status through netsetup.log located at c:\windows\debug

CreateProvisioningPackage 12

Useful Links

https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-provisioning-package-command-line-options

https://www.microsoft.com/store/apps/9nblggh4tx22