PowerShell GUI for Downloading Windows 10/11 ESD images - W10_11aria2ESD.ps1

garlin

Moderator
Staff member
I've written a PowerShell GUI to download complete Win 10 & 11 ESD images. After recent changes, MS doesn't allow you to use their website to directly download ISO's for older W10 or 11 images. This affects downloaders like Rufus, TechBench and heidoc.net which required that backdoor.

While you can use MCT to download older releases with a wrapper, those images are dynamically created and not static files (for checksum comparison). For a current ISO image, continue to use the normal Microsoft Software Download websites.

This script allows you to select the RTM/GA or a more recent build, and uses a copy of Aria2.exe to perform the actual ESD download. Using Aria2, a normal download might only take about 6-8 min. to finish compared to much longer times using native PS methods.

W10-11 aria2ESD.PNG

What versions of Windows are supported?
  • Win 7 & 8.1 with WMF 5.1
  • Win 10 & 11
Why do I get a PowerShell execution policy error?
Your default execution policy prevents unsigned scripts from running. Run the W10_11aria2ESD.bat instead.

What Windows releases are available?
W10 1903 to 22H2 (x86, x64 & arm64), and W11 21H2 to 22H2 (x64 & arm64). For Home, Pro and EDU releases pick the Consumer Client, and Business for Enterprise VL editions. There is a government-approved China edition for local users.

Why does it need to run Aria2?
Aria2 is an open source tool which runs parallel network connections to dramatically speed up downloads. I'm using the same settings as UUP dump's download script for optimal performance.

How do I use the image?
NTLite can directly open the ESD image, and convert it back into an ISO format for processing. Or use abbodi86's ESD Decrypter tool, outside of NTLite. ESD compressed images are highly compact, so extraction may take several minutes.

Why don't I see Build nnnnn.nnnn listed?
MS doesn't provide every build in ESD format, so it's more like MCT in tracking the re-released ISO versions.

Why can't I find the download URL's in your script?
To write my script, I ransacked abbodi's pastebin collection, which is a set of long download URL's for every available release. The original lists are lengthy because there's multiple architectures and languages. The total line count for just the URL's was over 4200 lines!

Rather than separate data into another file (which creates the possibility of user error), I used .NET data compression to convert the lists into a character-encoded byte array and decompress it when the script runs. If you want, use Expand-Data.ps1 to verify its contents.

Can I restart a cancelled download?
If you cancel a download, and restart the same ESD file -- Aria2 will resume where it stopped, and continue downloading until done.
 

Attachments

  • W10_11aria2ESD.zip
    130.4 KB
Last edited:
Tested and download the file less than a minute. With the verifications of the download, I could say that the download was completed in 2-3 minutes. Great job!
 
Getting an error:
PS C:\Users\mreid\Downloads\W10_11aria2ESD> .\W10_11aria2ESD.ps1
Exception setting "LastWriteTime": "Cannot convert the "System.String[]" value of type "System.String[]" to type "System.DateTime"."
Start-Process: C:\Users\mreid\Downloads\W10_11aria2ESD\W10_11aria2ESD.ps1:1750
Line |
1750 | Start-Process "$PSScriptRoot\aria2c.exe" -Argument "-x16 -s16 -c -R $ …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| This command cannot be run due to the error: An error occurred trying to start process
| 'C:\Users\mreid\Downloads\W10_11aria2ESD\aria2c.exe' with working directory
| 'C:\Users\mreid\Downloads\W10_11aria2ESD'. The system cannot find the file specified.
 
Back
Top