• Stars
    star
    2,212
  • Rank 20,853 (Top 0.5 %)
  • Language
    PowerShell
  • License
    GNU General Publi...
  • Created almost 6 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A PowerShell script to download Windows or UEFI Shell ISOs

Fido: A PowerShell download script for Microsoft Windows and UEFI Shell ISOs

Licence Github stats

Description

Fido is a PowerShell script that is primarily designed to be used in Rufus, but that can also be used in standalone fashion, and whose purpose is to automate access to the official Microsoft Windows retail ISO download links as well as provide convenient access to bootable UEFI Shell images.

This script exists because, while Microsoft does make retail ISO download links freely and publicly available (at least for Windows 8 through Windows 11), up until recent releases, most of these links were only available after forcing users to jump through a lot of unwarranted hoops that created an exceedingly counterproductive, if not downright unfriendly, consumer experience, that greatly detracted from what people really want (direct access to ISO downloads).

As to the reason one might want to download Windows retail ISOs, as opposed to the ISOs that are generated by Microsoft's own Media Creation Tool (MCT), this is because using official retail ISOs is currently the only way to assert with absolute certainty that the OS content has not been altered. Indeed, because there only exists a single master for each of them, Microsoft retail ISOs are the only ones you can obtain an official SHA-1 for (from MSDN, if you have access to it, or from sites such as this one) allowing you to be 100% sure that the image you are using has not been corrupted and is safe to use.

This, in turn, offers assurance that the content YOU are using to install your OS, which it is indeed critical to validate beforehand if you have the slightest concern about security, does match, bit for bit, the one that Microsoft released.

On the other hand, regardless of the manner in which Microsoft's Media Creation Tool produces its content, because no two MCT ISOs are ever the same (due to MCT always regenerating the ISO content on the fly) it is currently impossible to validate with absolute certainty whether any ISO that was generated by the MCT is safe to use. Especially, unlike what is the case for retail ISOs, it is impossible to tell whether an MCT ISO may have been corrupted after generation.

Hence the need to provide users with a much easier and less restrictive way to access official retail ISOs...

License

GNU General Public License version 3.0 or later.

How it works

The script basically performs the same operation as one might perform when visiting the following URL (that is, in the case of Windows 10, provided that you have also changed your User-Agent browser string, since, the Microsoft web servers detect that you are using a version of Windows that is the same as the one you are trying to download, they may redirect you away from the page that allows you to obtain a direct ISO download link):

https://www.microsoft.com/en-us/software-download

After checking basic access to the Microsoft software downloads website the script first queries the web API from the Microsoft servers, to request the language selection available for the version of Windows selected, and then requests the actual download links, for all the architectures available for that language + version.

Requirements

Windows 8 or later with PowerShell. Windows 7 is not supported.

Commandline mode

Fido supports commandline mode whereas, whenever one of the following options is provided, a GUI is not instantiated and you can instead generate the ISO download from within a PowerShell console or script.

Note however that, as of 2023.05, Microsoft has removed access to older releases of Windows ISOs and as a result, the list of releases that can be downloaded from Fido has had to be reduced to only the latest for each version.

The options are:

  • Win: Specify Windows version (e.g. "Windows 10"). Abbreviated version should work as well (e.g -Win 10) as long as it is unique enough. If this option isn't specified, the most recent version of Windows is automatically selected. You can obtain a list of supported versions by specifying -Win List.
  • Rel: Specify Windows release (e.g. "21H1"). If this option isn't specified, the most recent release for the chosen version of Windows is automatically selected. You can also use -Rel Latest to force the most recent to be used. You can obtain a list of supported versions by specifying -Rel List.
  • Ed: Specify Windows edition (e.g. "Pro/Home"). Abbreviated editions should work as well (e.g -Ed Pro) as long as it is unique enough. If this option isn't specified, the most recent version of Windows is automatically selected. You can obtain a list of supported versions by specifying -Ed List.
  • Lang: Specify Windows language (e.g. "Arabic"). Abbreviated or part of a language (e.g. -Lang Int for English International) should work as long as it's unique enough. If this option isn't specified, the script attempts to select the same language as the system locale. You can obtain a list of supported languages by specifying -Lang List.
  • Arch: Specify Windows architecture (e.g. "x64"). If this option isn't specified, the script attempts to use the same architecture as the one from the current system.
  • GetUrl: By default, the script attempts to automatically launch the download. But when using the -GetUrl switch, the script only displays the download URL, which can then be piped into another command or into a file.

Examples of a commandline download:

PS C:\Projects\Fido> .\Fido.ps1 -Win 10
No release specified (-Rel). Defaulting to '21H1 (Build 19043.985 - 2021.05)'.
No edition specified (-Ed). Defaulting to 'Windows 10 Home/Pro'.
No language specified (-Lang). Defaulting to 'English International'.
No architecture specified (-Arch). Defaulting to 'x64'.
Selected: Windows 10 21H1 (Build 19043.985 - 2021.05), Home/Pro, English International, x64
Downloading 'Win10_21H1_EnglishInternational_x64.iso' (5.0 GB)...
PS C:\Projects\Fido> .\Fido.ps1 -Win 10 -Rel List
Please select a Windows Release (-Rel) for Windows 10 (or use 'Latest' for most recent):
 - 21H1 (Build 19043.985 - 2021.05)
 - 20H2 (Build 19042.631 - 2020.12)
 - 20H2 (Build 19042.508 - 2020.10)
 - 20H1 (Build 19041.264 - 2020.05)
 - 19H2 (Build 18363.418 - 2019.11)
 - 19H1 (Build 18362.356 - 2019.09)
 - 19H1 (Build 18362.30 - 2019.05)
 - 1809 R2 (Build 17763.107 - 2018.10)
 - 1809 R1 (Build 17763.1 - 2018.09)
 - 1803 (Build 17134.1 - 2018.04)
 - 1709 (Build 16299.15 - 2017.09)
 - 1703 [Redstone 2] (Build 15063.0 - 2017.03)
 - 1607 [Redstone 1] (Build 14393.0 - 2016.07)
 - 1511 R3 [Threshold 2] (Build 10586.164 - 2016.04)
 - 1511 R2 [Threshold 2] (Build 10586.104 - 2016.02)
 - 1511 R1 [Threshold 2] (Build 10586.0 - 2015.11)
 - 1507 [Threshold 1] (Build 10240.16384 - 2015.07)
PS C:\Projects\Fido> .\Fido.ps1 -Win 10 -Rel 20H2 -Ed Edu -Lang Fre -Arch x86 -GetUrl
https://software-download.microsoft.com/db/Win10_Edu_20H2_v2_French_x32.iso?t=c48b32d3-4cf3-46f3-a8ad-6dd9568ff4eb&e=1629113408&h=659cdd60399584c5dc1d267957924fbd

Additional Notes

Because of its intended usage with Rufus, this script is not designed to cover every possible retail ISO downloads. Instead we mostly chose the ones that the general public is likely to request. For instance, we currently have no plan to add support for LTSB/LTSC Windows ISOs downloads.

If you are interested in such downloads, then you are kindly invited to visit the relevant download pages from Microsoft such as this one for LTSC versions.

More Repositories

1

rufus

The Reliable USB Formatting Utility
C
26,912
star
2

libwdi

Windows Driver Installer library for USB devices
C
1,738
star
3

uefi-ntfs

UEFI:NTFS - Boot NTFS or exFAT partitions from UEFI
C
723
star
4

efifs

EFI FileSystem drivers
C
497
star
5

UEFI-Shell

UEFI Shell binary images, generated from EDK2 stable
242
star
6

bootimg-tools

Android boot.img creation and extraction tools [NOTE: This project is NO LONGER maintained]
C
156
star
7

winpatch

Windows system file patcher
C
62
star
8

fasmg-ebc

An EFI Byte Code (EBC) assembler, based on fasmg
Assembly
38
star
9

rufus-web

https://rufus.ie homepage and locale tracker
HTML
37
star
10

ffs

For F@%k's sake - it's a MODULE!
C
34
star
11

ms-sys

Not an official mirror of ms-sys
C
32
star
12

ubrx

Universal BIOS Recovery console for x86 PCs
Assembly
31
star
13

bled

Base Library for Easy Decompression
C
29
star
14

ntfs-3g-old

UEFI read/write NTFS driver, based on ntfs-3g
C
27
star
15

fasmg-efi

A simple Hello World for x86_64 UEFI using fasmg
Assembly
22
star
16

gnu-efi

gnu-efi fork
C
19
star
17

parrot

Linux parrot device driver sample
C
15
star
18

base-parallel

Win32 console sample for running a CPU-heavy task against multiple core/CPUs
C
11
star
19

base-console

A simple "hello world" win32 console template
C
11
star
20

winpki

Windows PKI library, for binary signing and more
C
11
star
21

pbatard.github.io

Github pages
HTML
9
star
22

xtreamerdev

Automatically exported from code.google.com/p/xtreamerdev
C
9
star
23

AltInput

Alternate Input module for Kerbal Space Program
C#
8
star
24

libusbx-hp

libusbx Windows hotplug
C
8
star
25

list-immersive-colors

List Immersive Colors
C
7
star
26

xisle

XAML Islands testing ground
C++
7
star
27

AmiNtfsBug

AMI UEFI NTFS driver bug test application
C
6
star
28

jekyll

Ruby
5
star
29

files

A repository to share static content
HTML
4
star
30

EbcDebugger

A standalone EBC Debugger
C
4
star
31

libusb-pbatard

old libusb-pbatard repo and associated branches
C
4
star
32

uefi-md5sum

MD5 checksum validation for UEFI
C
3
star
33

akeo

Automatically exported from code.google.com/p/akeo
Assembly
3
star
34

AppVeyor

A repository to test AppVeyor
C
2
star
35

thanks_for_the_regression

Thanks for the regression, GitHub Actions!
2
star