Speeding up OSD

 

Setup

For the measurements in this post I’m on SCCM 1702 and using a ThinkPad T470s as the client. In order to measure the individual steps in the task sequence I’m using a report made by Thomas Larsen.

The task sequence I’m using does a bare metal install with a Windows 10 1607 Reference Image totaling 9,8 GB.

Power scheme

The first thing to speed up is changing the powers scheme, by default both the Windows PE and Full OS portion are run in balanced power scheme, so I wanna change it to High Performance.

Built in power schemes in Windows
Listing the built in power schemes in Windows

It can be done with the following command

X:\Windows\System32\PowerCfg.exe /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

After the task sequence has reboot and started the full operating system, the command needs to be run again. This time using the tool stored in the loaded OS

PowerCfg.exe /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

At the end of the task sequence add another “run command line” resetting the power scheme to the balanced scheme using this command

PowerCfg.exe /s 381b4222-f694-41f0-9685-ff5bb260df2e

In my sample task sequence, running with the balanced power scheme the average execution time was 30:44. When changed the power scheme to high performance it dropped to an average of 22:58 minutes, an improvement just short of 8 minutes.

Apply wim from DP

By default the “Apply Operating System” step has two phases. first it downloads the wim-file to disk and then afterwards start unpacking it. On my test system this process takes around 9 minutes. This can be changed unpack the wim-file directly from the distribution point. In order to do this first a share has to be made for the wim-file and then the task sequence should be told to apply the wim-file directly from this share.

The share is created in the properties for each Windows Image as seen:

Next up, in the “Apply Operating System” step:

In my testing this cut the time spent in half from 9 minutes down to 4 minutes and 40 seconds.

Ccmexec startup

The final optimization is a bit of a cheat, the sccm client (ccmexec) gets installed as a Windows service with the startup type Automatic (Delayed). This adds a delayed of two minutes each time there is a reboot in the task sequence while it’s running in the full operating system. This can be changed in the first step after “Setup Windows and Configuration Manager” with a “run command line” running this command “cmd /c sc config CcmExec start= auto

The reason the service is set to delayed startup, is to prevent it from starting a hardware/software inventory during boot/user logon in daily operations after the installation process has finished so as before a final “run command line” step is added resetting the startup with this command “cmd /c sc config “CcmExec” start= delayed-auto