How to REALLY create a Windows 10 ISO, no 3rd party tools needed

You probably noticed there is no ISO download of some of the Windows 10 Enterprise Technical Preview builds, like 10041 and 10061 (at least not yet), but with a little bit of PowerShell you can create one, allowing for clean installs.

Disclaimer: This is probably not even remotely supported, so don’t blame me if something doesn’t work as it should (but please let me know)

Update 2015-03-24: Microsoft just released ISO files of Windows 10 Professional build 10041, no Enterprise ISO files yet.

Update 2015-03-29: Tim Mintner just released an excellent post on how you can convert the Windows 10 Pro SKU to Windows 10 Enterprise.

Update 2015-04-23: Worked fine for Windows 10 build 10061 as well.

Update 2015-05-21: Worked fine for Windows 10 build 10122 as well.  


There are plenty of posts out there claiming you need third party tools and/or ESD decrypt software to create a Windows 10 build 10041 ISO file. That’s not correct, Windows 10 and the Windows 10 ADK handles that perfectly on their own. That being said, of course you should use PowerShell to drive those tools. Automation is King!

That being said: It’s indeed a bit faster to use a third party ESD decrypt tool, you save a about 10 minutes since you don’t need to spin up a Windows 10 machine, but I have always been a bit hesitant to download and run “hacks” from sites I don’t know well. Microsoft I trust not to add any malware.

Everything you need to create an ISO file of Windows 10 build 10041 ISO, is in the install.esd file which you find in the C:\$Windows.~BT\Sources folder after starting an upgrade from a Windows 10 build 9926 install. ESD files were introduced in Windows 8.1, and are simply highly compressed versions of a normal WIM file. They are often called a Push-Button Reset Image. You cannot mount or service an ESD file, and you will find they take forever to extract (decompress) information from. But they are smaller than the normal WIM file, about 30 percent or so.

The install.esd file after starting the upgrade from build 9926 to build 10041.

What you need

To create a Windows 10 build 10041 ISO you need the following:

  • A machine (use a VM) running Windows 10 build 9926 with Windows 10 ADK preview installed (or the oscdimg.exe file copied from another install)
  • The script in this post.

Note: If you want to build an ISO that also contain drivers, updates and applications, view my post on how to deploy Windows 10 with MDT 2013. In MDT it’s super-easy to generate an ISO 🙂


To convert the Windows 10 build 10041 install.esd into a bootable ISO there are four simply steps:

  1. Install a VM with Windows 10 build 9926 (for which there is an ISO)
  2. Install Windows 10 ADK on the VM as well (or copy the oscdimg.exe from another Windows 10 ADK installation)
  3. Start the upgrade of Windows 10 build 9926 to Windows 10 build 10041 via Update and Recovery (the setup process decrypts the ESD file).
  4. Run the below PowerShell script from this post

I added documentation inline in the script so it should not be too hard to follow.

# Note, only tested on Windows 10 build 9860, x64 Enterprise edition.
# The native DISM cmdlets didn't like the ESD files very much, so using dism.exe instead.
$ESDFile = 'C:\RecoveryImage\Install.esd'
$ISOMediaFolder = 'C:\ISO\Media'
$ISOFile = 'C:\ISO\Windows10_build9860.iso'
$PathToOscdimg = 'C:\oscdimg'
Write-Output "Checking for oscdimg.exe"
If (Test-Path $PathToOscdimg\oscdimg.exe){
    Write-Output "Oscdimg.exe found, OK, continuing..."
    Write-Output ""
Else {
    Write-Output "Oupps, cannot find Oscdimg.exe. Aborting"
# Create ISO folder structure
New-Item -ItemType Directory $ISOMediaFolder
dism.exe /Apply-Image /ImageFile:$ESDFile /Index:1 /ApplyDir:$ISOMediaFolder
# Create empty boot.wim file with compression type set to maximum
New-Item -ItemType Directory 'C:\EmptyFolder'
dism.exe /Capture-Image /ImageFile:$ISOMediaFolder\sources\boot.wim /CaptureDir:C:\EmptyFolder /Name:EmptyIndex /Compress:max
# Export base Windows PE to empty boot.wim file (creating a second index)
dism.exe /Export-image /SourceImageFile:$ESDFile /SourceIndex:2 /DestinationImageFile:$ISOMediaFolder\sources\boot.wim /Compress:Recovery /Bootable
# Delete the first empty index in boot.wim
dism.exe /Delete-Image /ImageFile:$ISOMediaFolder\sources\boot.wim /Index:1
# Export Windows PE with Setup to boot.wim file
dism.exe /Export-image /SourceImageFile:$ESDFile /SourceIndex:3 /DestinationImageFile:$ISOMediaFolder\sources\boot.wim /Compress:Recovery /Bootable
# Display info from the created boot.wim
dism.exe /Get-WimInfo /WimFile:$ISOMediaFolder\sources\boot.wim
# Create empty install.wim file with MDT/ConfigMgr friendly compression type (maximum)
dism.exe /Capture-Image /ImageFile:$ISOMediaFolder\sources\install.wim /CaptureDir:C:\EmptyFolder /Name:EmptyIndex /Compress:max
# Export Windows Technical Preview to empty install.wim file
dism.exe /Export-image /SourceImageFile:$ESDFile /SourceIndex:4 /DestinationImageFile:$ISOMediaFolder\sources\install.wim /Compress:Recovery
# Delete the first empty index in install.wim
dism.exe /Delete-Image /ImageFile:$ISOMediaFolder\sources\install.wim /Index:1
# Display info from the created install.wim
dism.exe /Get-WimInfo /WimFile:$ISOMediaFolder\sources\install.wim
# Create the Windows Technical Preview ISO
# For more info on the Oscdimg.exe commands, check this post:
$BootData='2#p0,e,b"{0}"#pEF,e,b"{1}"' -f "$ISOMediaFolder\boot\","$ISOMediaFolder\efi\Microsoft\boot\efisys.bin"
$Proc = Start-Process -FilePath "$PathToOscdimg\oscdimg.exe" -ArgumentList @("-bootdata:$BootData",'-u2','-udfver102',"$ISOMediaFolder","$ISOFile") -PassThru -Wait -NoNewWindow
if($Proc.ExitCode -ne 0)
    Throw "Failed to generate ISO with exitcode: $($Proc.ExitCode)"
Running the PowerShell script.
The Windows 10 build 10041 ISO file.

Happy Deployment / Johan

About the author

Johan Arwidmark

5 1 vote
Article Rating
Notify of
Inline Feedbacks
View all comments