OSDBuilder is a PowerShell module to help you perform Offline Servicing to a Windows Operating System Image. By using an Offline method of configuring an Operating System, it can then be imported in MDT or SCCM and used like any other OS Deployment. This includes being able to use in an Upgrade Task Sequence, which you cannot do with a Captured Image.

The main difference between OSDBuilder and other scripted methods for Servicing a Windows Image Offline is that OSDBuilder creates an answer file called a Task (think Task Sequence). Since the Task has all the information it needs to update the Windows Image, there is no interaction necessary, and as long as the content (updates) are updated regularly, the Task can be repeated as needed.

Since the configuration is also saved in a Task, it is possible to select multiple tasks to run, and they will execute one right after another. This makes performing a monthly update take a few minutes to kick off. After a few hours, everything will be complete!

OSDBuilder Design

Most people are visual, so to help you understand how OSDBuilder will work, here is the OSDBuilder Lifecycle. So let's talk about how this works. The BLACK background one is the newer version, and the WHITE background one is kept for historical purposes (OSMedia Tasks don't exist anymore)


Before working with an Operating System, you must first Import it into OSDBuilder. This will generate a full inventory of the Operating System so you can later make custom OSBuilds.


The second step is to Update the Imported Operating System. You should perform this step after you Import the Operating System and after every Patch Tuesday. This will perform the following actions

  • Media

    • Expand Setup Update

  • WinPE (WinPE.wim, WinRE.wim, Setup.wim)

    • Apply Servicing Stack

    • Apply Cumulative Update

    • Apply Dynamic Component Updates

  • OS

    • Apply Servicing Stack

    • Apply Cumulative Update

    • Apply Dynamic Component Updates

    • Apply Adobe Security Updates


If you want to customize the Operating System by removing Appx Packages or enable NetFX3, then you need to first create an OSBuild Task. The following options can be customized:

  • WinPE (WinPE.wim, WinRE.wim, Setup.wim)

    • Add ADK Packages

    • Add MS DaRT

    • Add Drivers

    • Add ExtraFiles

    • Execute custom PowerShell scripts

  • OS

    • Enable NetFX3

    • Remove Appx Provisioned Packages

    • Remove Windows Packages

    • Remove Windows Capabilities

    • Enable Windows Optional Features

    • Disable Windows Optional Features

    • Apply Features on Demand

    • Apply Language Packs

    • Apply Language Interface Packs

    • Apply Language Features on Demand

    • Apply Start Layout

    • Apply Unattend.xml

    • Add Drivers

    • Add ExtraFiles

    • Add Packages

    • Execute custom PowerShell scripts

    • Set International Settings


After the OSBuild Task is created, you can then create your OSBuild


Just like a you can customize your Operating System, you can also customize WinPE


After the PEBuild Task is created, you can create your PEBuild


You can create an ISO of any OSMedia, OSBuild, or PEBuild


You can create bootable USB of any OSMedia, OSBuild, or PEBuild

The Cycle

This is where your process repeats. When Microsoft releases a new round of updates, use Get-OSDBuilderUpdates to download the updates you need, and remove the ones you don't from. This step is completely optional as OSDBuilder can automatically download the updates as needed.

Use Update-OSMedia to get all your imported Operating Systems up to date. You can update all of them at the same time as this will take a while to process, typically 30 minutes per Operating System.

Once all the OSMedia is up to date, use New-OSBuild to regenerate all your customizations.

OSDBuilder PowerShell Module

To keep things easy, OSDBuilder is a PowerShell module and integrates well into PowerShell ISE


Last updated