A default Windows 10 installation can include a lot of extra baggage. Depending upon the source of the Windows 10 installation media, a default installation might include things like apps for news, weather, and sports, and even advertisements for Office 365. For organizations that deploy Windows 10 from an image file, there are often advantages to removing the unwanted clutter from Windows 10 images. This is especially true for virtual desktops, because operating system clutter consumes server level resources.
For many years, the tool of choice for preparing an operating system for duplication has been Microsoft’s SYSPREP utility. This utility still exists in Windows 10. Some of the earlier the copy of SYSPREP that was included with some of the earlier Windows 10 builds had trouble dealing with the built-in modern applications, but Microsoft does seem to have worked out the kinks. It is worth noting however, that Sysprep is only intended to be run from a clean Windows deployment, and should not be used on a system that has been upgraded from an earlier Windows version.
Before you use Sysprep to build a custom deployment image, it is a good idea to make sure that all of the latest Windows 10 updates have been installed. Once the Windows installation has been brought up to date, navigate to c:\Windows\system32\sysprep and run Sysprep.exe. Although you can run this utility from the command line, Sysprep also has a GUI interface. You can see what this interface looks like in the figure below.
This is the Sysprep GUI.
As you look at the figure above, you will see that it contains two drop down lists. The first of these drop down lists is the System Cleanup Action. Since the goal is to build a custom deployment image, and we haven’t performed any customizations yet, you should choose the option to Enter System Audit Mode. Make sure that the Shutdown Options drop down menu is set to Reboot, and click OK.
After a brief delay, the system will reboot into Audit Mode. Audit Model looks exactly like a normal Windows 10 session, but the login prompt is bypassed, and an automatic login is performed using the built-in Administrator account. Sysprep is also automatically loaded when the system boots to the Windows 10 desktop.
The next thing that I recommend doing is to remove the built-in apps. You don’t have to get rid of everything of course, but it is a good idea to remove anything that you don’t need.
Unfortunately, the Start menu isn’t much help when it comes to removing unwanted software. As you can see in the next figure, some items are listed on the Start menu, but many of the live tiles are deactivated while the system is in Audit Mode.
Most of the live tiles are deactivated in Audit Mode.
The easiest way to find out what is installed is to open an Administrative PowerShell session, and enter the following command:
Get-AppXPackage | Select-Object Name
As you can see in the figure below, there are lots of application packages that are installed by default.
There are many packages installed by default.
Uninstalling unwanted packages is relatively easy. You will notice that there is a package called Microsoft.BingWeather near the bottom of the list. If we wanted to remove this package, we would type:
Get-AppXPackage *bingweather* | Remove-AppXPackage
You can see how this works in the next figure.
The Bing Weather package has been removed.
Once you have removed any unwanted software, you might install any software that you want to add to the image. Not every image contains applications, of course. Some companies opt to use virtual applications, or to deploy applications later on. If you do decide to install applications however, you should do so by using the Install-Package cmdlet.
One more thing that you might consider doing as a part of the image creation process is to customize the operating system’s logo and the OEM information. If you purchase PCs from some of the more well known manufacturers, the manufacturer will brand Windows with their own logo and their own tech support information, but you can insert your organization’s own logo and the contact information for the help desk instead.
To do so, you will need to go to the C:\Windows folder, and create a sub-folder named OEM. You must then place your corporate logo into this folder. The logo should be in .BMP format and must be 96 x 96 pixels in size.
Next, open the Registry Editor and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion. As always, you should exercise care when editing the registry since making a mistake can destroy Windows. With that said, create a new key called OEMInformation. You will then need to create a series of string values within the OEMInformation folder. You can see what these values look like in the figure below.
You can create a series of string values referencing your logo, and providing support information.
The support information that you provide will appear on the Settings screen, as shown in the next figure.
The custom support information is listed on the Settings screen.
When you finish customizing Windows, you can move forward with sysprepping the system. This time, you will need to select the option to Enter System Out of Box Experience (OOBE), and you will need to select the Generalize check box. The shut down option will need to be set to Shutdown in order to prevent the system from booting into the Out of Box Experience before you have a chance to create a system image.
Microsoft provides countless options for customizing a Windows operating system prior to creating a system image. The techniques discussed in this article are not an exhaustive discussion of the customizations that you can make, nor are these techniques the only way to get the job done. The important thing is to make a list of the customizations that you want to include in your image, so that you can make sure to implement those customizations before running Sysprep.
6 thoughts on “Building a Custom Windows 10 Image”
I feel that more discussion of using powershell to remove pre-intalled modern apps is warranted. For example, removing the Microsoft Store is a big no-no. Also, many apps are simply re-installed when you run updates (the “Get Office” app springs to mind. Enterprise management of modern apps requires a whole lot more than knowing powershell can remove them.
Great article. I did this on a VM and was able to follow it all. What do I do afterward with the VM powered off? How would I use this to deploy the image?
I’m glad that you liked it. Once you have created the VM and attached it to the ISO file, just open the VM console and power up the VM. The VM should boot to an installer that deploys the image.
Where is the step that you create a bootable .ISO for offline installation??
oh poor guys…. he talks about creating a VM IMAGE…