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.
- This comes as a part of Windows Assessment and Deployment kit (ADK) for Windows 10
- 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.

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.

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.

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:
- 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)
- Fabrikam-%RAND:5% = It will consists of 9 initial characters as “Fabrikam-“ and remaining 6 characters will be random number.

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.

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.

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.

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

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.

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.

We can also verify through Event viewer.
Navigate to Event Viewer > Applications and Services Logs > Microsoft > Windows > Provisioning-Diagnostics-Provider > Admin

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

what are your thoughts about using provisioning packages for Azure-based Windows 10 virtual machines? We create a VM and make that a template. When a pool of Windows 10 VMs is created, we execute the provisioning package with the PS script. It joins AAD and enrolls in Intune. A challenge we have there is applying an AAD group to the Remote Desktop Users group locally on all the pooled VMs. Let me know your thoughts