mirror of
https://github.com/pbatard/Fido.git
synced 2025-09-16 22:28:02 +02:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e293e97bac | ||
![]() |
b1eebac8dc | ||
![]() |
8508ac6164 | ||
![]() |
eac06c958f |
112
Fido.ps1
112
Fido.ps1
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Fido v1.23 - Retail Windows ISO Downloader
|
||||
# Fido v1.26 - Feature ISO Downloader, for retail Windows images and UEFI Shell
|
||||
# Copyright © 2019-2021 Pete Batard <pete@akeo.ie>
|
||||
# Command line support: Copyright © 2021 flx5
|
||||
# ConvertTo-ImageSource: Copyright © 2016 Chris Carter
|
||||
@@ -95,6 +95,14 @@ if (!$Cmd) {
|
||||
$zh = 0x10000
|
||||
$ko = 0x20000
|
||||
$WindowsVersions = @(
|
||||
@(
|
||||
@("Windows 11", "windows11"),
|
||||
@(
|
||||
"21H2 (Build 22000.194 - 2021.10)",
|
||||
@("Windows 11 Home/Pro", 2069),
|
||||
@("Windows 11 Home China ", ($zh + 2070))
|
||||
)
|
||||
),
|
||||
@(
|
||||
@("Windows 10", "Windows10ISO"),
|
||||
@(
|
||||
@@ -139,6 +147,12 @@ $WindowsVersions = @(
|
||||
@("Windows 10 Education", 1216),
|
||||
@("Windows 10 Home China ", ($zh + 1215))
|
||||
),
|
||||
@(
|
||||
"1809 R3 (Build 17763.379 - 2019.03)",
|
||||
@("Windows 10 Home/Pro", 1203),
|
||||
@("Windows 10 Education", 1202),
|
||||
@("Windows 10 Home China ", ($zh + 1204))
|
||||
),
|
||||
@(
|
||||
"1809 R2 (Build 17763.107 - 2018.10)",
|
||||
@("Windows 10 Home/Pro", 1060),
|
||||
@@ -248,7 +262,12 @@ $WindowsVersions = @(
|
||||
)
|
||||
),
|
||||
@(
|
||||
@("UEFI Shell v2", "UEFI_SHELL"),
|
||||
@("UEFI Shell 2.2", "UEFI_SHELL 2.2"),
|
||||
@(
|
||||
"21H2 (edk2-stable202108)",
|
||||
@("Release", 0),
|
||||
@("Debug", 1)
|
||||
),
|
||||
@(
|
||||
"21H1 (edk2-stable202105)",
|
||||
@("Release", 0),
|
||||
@@ -259,6 +278,13 @@ $WindowsVersions = @(
|
||||
@("Release", 0),
|
||||
@("Debug", 1)
|
||||
)
|
||||
),
|
||||
@(
|
||||
@("UEFI Shell 2.0", "UEFI_SHELL 2.0"),
|
||||
@(
|
||||
"4.632 [20100426]",
|
||||
@("Release", 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -648,7 +674,7 @@ function Get-Windows-Languages([int]$SelectedVersion, [int]$SelectedEdition)
|
||||
}
|
||||
$i++
|
||||
}
|
||||
} elseif ($WindowsVersions[$SelectedVersion][0][1] -eq "UEFI_SHELL") {
|
||||
} elseif ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||
$languages += @(New-Object PsObject -Property @{ DisplayLanguage = "English (US)"; Language = "en-us"; Id = 0 })
|
||||
} else {
|
||||
$url = "https://www.microsoft.com/" + $QueryLocale + "/api/controls/contentinclude/html"
|
||||
@@ -704,16 +730,35 @@ function Get-Windows-Download-Links([int]$SelectedVersion, [int]$SelectedRelease
|
||||
foreach ($Version in $Windows7Versions[$SelectedEdition][$SkuId][2]) {
|
||||
$links += @(New-Object PsObject -Property @{ Type = $Version[0]; Link = $Version[1] })
|
||||
}
|
||||
} elseif ($WindowsVersions[$SelectedVersion][0][1] -eq "UEFI_SHELL") {
|
||||
$tag = $WindowsVersions[$SelectedVersion][$SelectedRelease][0].SubString(0,4)
|
||||
$url = "https://github.com/pbatard/UEFI-Shell/releases/download/" + $tag + "/UEFI-Shell_" + $tag
|
||||
} elseif ($WindowsVersions[$SelectedVersion][0][1].StartsWith("UEFI_SHELL")) {
|
||||
$tag = $WindowsVersions[$SelectedVersion][$SelectedRelease][0].Split(' ')[0]
|
||||
$shell_version = $WindowsVersions[$SelectedVersion][0][1].Split(' ')[1]
|
||||
$url = "https://github.com/pbatard/UEFI-Shell/releases/download/" + $tag
|
||||
$link = $url + "/UEFI-Shell-" + $shell_version + "-" + $tag
|
||||
if ($SelectedEdition -eq 0) {
|
||||
$url += "_RELEASE.iso"
|
||||
$link += "-RELEASE.iso"
|
||||
} else {
|
||||
$url += "_DEBUG.iso"
|
||||
$link += "-DEBUG.iso"
|
||||
}
|
||||
try {
|
||||
# Read the supported archs from the release URL
|
||||
$url += "/Version.xml"
|
||||
$xml = New-Object System.Xml.XmlDocument
|
||||
if ($Verbosity -ge 2) {
|
||||
Write-Host Querying $url
|
||||
}
|
||||
$xml.Load($url)
|
||||
$sep = ""
|
||||
$archs = ""
|
||||
foreach($arch in $xml.release.supported_archs.arch) {
|
||||
$archs += $sep + $arch
|
||||
$sep = ", "
|
||||
}
|
||||
$links += @(New-Object PsObject -Property @{ Type = $archs; Link = $link })
|
||||
} catch {
|
||||
Error($_.Exception.Message)
|
||||
return @()
|
||||
}
|
||||
# TODO: Read the supported archs from the release (from an XML file or something)
|
||||
$links += @(New-Object PsObject -Property @{ Type = "X64, IA32, AARCH64, ARM"; Link = $url })
|
||||
} else {
|
||||
$url = "https://www.microsoft.com/" + $QueryLocale + "/api/controls/contentinclude/html"
|
||||
$url += "?pageId=" + $RequestData["GetLinks"][0]
|
||||
@@ -778,7 +823,10 @@ function Process-Download-Link([string]$Url)
|
||||
if ($Cmd) {
|
||||
$pattern = '.*\/(.*\.iso).*'
|
||||
$File = [regex]::Match($Url, $pattern).Groups[1].Value
|
||||
$Size = Size-To-Human-Readable (Invoke-WebRequest -UseBasicParsing -Uri $Url -Method Head).Headers.'Content-Length'
|
||||
# PowerShell implicit conversions are iffy, so we need to force them...
|
||||
$str_size = (Invoke-WebRequest -UseBasicParsing -Uri $Url -Method Head).Headers.'Content-Length'
|
||||
$tmp_size = [uint64]::Parse($str_size)
|
||||
$Size = Size-To-Human-Readable $tmp_size
|
||||
Write-Host "Downloading '$File' ($Size)..."
|
||||
Invoke-WebRequest -UseBasicParsing -Uri $Url -OutFile $File
|
||||
} else {
|
||||
@@ -921,7 +969,7 @@ if ($Cmd) {
|
||||
if (!$Arch -and $Verbosity -ge 1) {
|
||||
Write-Host "No architecture specified (-Arch). Defaulting to '$($link.Type)'."
|
||||
}
|
||||
$Selected += ", " + $link.Type
|
||||
$Selected += ", [" + $link.Type + "]"
|
||||
$winLink = $link
|
||||
break;
|
||||
}
|
||||
@@ -1093,8 +1141,8 @@ exit $ExitCode
|
||||
# SIG # Begin signature block
|
||||
# MIIcQgYJKoZIhvcNAQcCoIIcMzCCHC8CAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAU0UbnjQJMRkcW
|
||||
# 9/SYEZb3CBUSWmQAyJcWC8Q647QEXaCCCy4wggVGMIIELqADAgECAhAkaSZj72wM
|
||||
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBVeU7bDzGt9CJn
|
||||
# Kdplh/v8BK9h0xj/RjVturFLFHg7CaCCCy4wggVGMIIELqADAgECAhAkaSZj72wM
|
||||
# Cjsjz6MQw2SbMA0GCSqGSIb3DQEBCwUAMH0xCzAJBgNVBAYTAkdCMRswGQYDVQQI
|
||||
# ExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoT
|
||||
# EUNPTU9ETyBDQSBMaW1pdGVkMSMwIQYDVQQDExpDT01PRE8gUlNBIENvZGUgU2ln
|
||||
@@ -1159,17 +1207,17 @@ exit $ExitCode
|
||||
# T01PRE8gQ0EgTGltaXRlZDEjMCEGA1UEAxMaQ09NT0RPIFJTQSBDb2RlIFNpZ25p
|
||||
# bmcgQ0ECECRpJmPvbAwKOyPPoxDDZJswDQYJYIZIAWUDBAIBBQCgfDAQBgorBgEE
|
||||
# AYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3
|
||||
# AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgJBgYMTvD/pIJ2ds3
|
||||
# kPJ6Yy1Qofs3TQ3VUw1Mi2soK9swDQYJKoZIhvcNAQEBBQAEggEAA5RNsTmrYt2w
|
||||
# iRt4jnqkBZ7YvSpPWeSutJgX1c3Tzwm8RTUJRMu8yu8b410cHAZ6jkrZ6oRJW+n2
|
||||
# tgzNCK4vbBDUgFbOYU5BEOpmDU1vuga17ary5rN3/AHOSE/TuHLt/a7Az6AHj9sG
|
||||
# 28OJxM68ZAs5VBH1XFzpI9t9OWlIAFQ6vgPQhXUyu9/NTQ7WfMob7A2sVfTRTTF/
|
||||
# ZE7r52v0iDmoUi5wz/c0lbRQWlIEzt8B8SbkQULx6cHRHKy+SDCkjxJI/TqXdvnn
|
||||
# IbF+eloX413aq5W6/8mVpYoKlLRbbS94X1PgKMHxtS/0Ya4Mpbyr+9pjG6YhidA8
|
||||
# G30mjrHDj6GCDiswgg4nBgorBgEEAYI3AwMBMYIOFzCCDhMGCSqGSIb3DQEHAqCC
|
||||
# AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQghgbnP9aj+2uYl+dt
|
||||
# r4bNidYAaOfNCz4F65XJOxpYTtAwDQYJKoZIhvcNAQEBBQAEggEAg0NC2ERbjbTm
|
||||
# tTHqgEwUBGNP8fx3RoV2Uu7diEnQR/mbPxntyk3xjxEGdJdQTCWKSTzGZHgXvq+e
|
||||
# bcNpWiI4VVL3eHsw7KhCClibR6eTV3PfzXpmZFm5ist7kLmbExjqU1xwW5IBSs/9
|
||||
# PUlAq9bidlKz9NnYy/2j/lDWK7pxYECRLcQG7OmFw4PrDdSiO9NhoG+2+CwE5RF0
|
||||
# qqeUUWWXLYVO4Vqsj/laEOh5NWsQvGoxiKK2x+ei3rt/DsQ/4RtQtClbp+krKG7v
|
||||
# ooO8EDGsuWDYKHNu4VVPSb7WKdhOLqRYunT4DaOa/Nl7S8Evipswj6ugD0Fdhz19
|
||||
# cb9p6b59ZqGCDiswgg4nBgorBgEEAYI3AwMBMYIOFzCCDhMGCSqGSIb3DQEHAqCC
|
||||
# DgQwgg4AAgEDMQ0wCwYJYIZIAWUDBAIBMIH+BgsqhkiG9w0BCRABBKCB7gSB6zCB
|
||||
# 6AIBAQYLYIZIAYb4RQEHFwMwITAJBgUrDgMCGgUABBRle6XLfAF1irMqXfHR3RfL
|
||||
# AxIw0gIUMj3OWqGgsLUt+ICmTL9aGS/WQqEYDzIwMjEwODI0MTQ0MjM1WjADAgEe
|
||||
# 6AIBAQYLYIZIAYb4RQEHFwMwITAJBgUrDgMCGgUABBSNVXS25QWTWua8aykdDhMJ
|
||||
# 3mhCzQIUS2ETr2jWXxMf93x77MboWkKQlEsYDzIwMjExMDA0MjA0NjE4WjADAgEe
|
||||
# oIGGpIGDMIGAMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9y
|
||||
# YXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMTAvBgNVBAMT
|
||||
# KFN5bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgU2lnbmVyIC0gRzOgggqLMIIF
|
||||
@@ -1233,13 +1281,13 @@ exit $ExitCode
|
||||
# U3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5l
|
||||
# dHdvcmsxKDAmBgNVBAMTH1N5bWFudGVjIFNIQTI1NiBUaW1lU3RhbXBpbmcgQ0EC
|
||||
# EHvU5a+6zAc/oQEjBCJBTRIwCwYJYIZIAWUDBAIBoIGkMBoGCSqGSIb3DQEJAzEN
|
||||
# BgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjEwODI0MTQ0MjM1WjAvBgkq
|
||||
# hkiG9w0BCQQxIgQg+8r+miUYUaWD81auvyH5duQKFpfNCvFn1LPKV9UJT3EwNwYL
|
||||
# BgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjExMDA0MjA0NjE4WjAvBgkq
|
||||
# hkiG9w0BCQQxIgQgCQRf15Lc2WIYkjt+tK2O5aMB8lwbsYGOa8hDIsKzBMwwNwYL
|
||||
# KoZIhvcNAQkQAi8xKDAmMCQwIgQgxHTOdgB9AjlODaXk3nwUxoD54oIBPP72U+9d
|
||||
# tx/fYfgwCwYJKoZIhvcNAQEBBIIBAAa8bZCJyW7ZsiHiXpxlBvzBAK+5Ft4xMw7i
|
||||
# XPST6hrNYVCpFgW1L70Euu0naSwfYmmipY1ZoPZZjVe2ANf5HZQUEgvhWgZXx6nL
|
||||
# Zzltbb8Oy3lZlDqxd97hxPwEXIPsmdjoC1JS6KO8FHppcBIqTBCbgPyi+KYOHIxO
|
||||
# 5tAaG3lzF2JF2IjpYworOaNIfV/o6D+myj5XVSbRrV9t+3DFm0DGKnc3PmW4avrP
|
||||
# pvUtJZOMkeKdEbZRQ/mgQ0iesdQU86oQhcLksow0E/bs3H+KEY6GZ+CgXSr2PvH0
|
||||
# VBI7GTotS2/Eggjqggimya0o+zlJ3Viagm7h6r7ZNwfiWFnNk7U=
|
||||
# tx/fYfgwCwYJKoZIhvcNAQEBBIIBAG4XNFoioU2nWY0eeLO56kWzL6zFTqjYS3fL
|
||||
# pAjv0sNj7RP0YAUkNC/IK3BQfa/n/pVcrsUTPg0ZECPJJD6ChZfUhrU6YG9o0QGs
|
||||
# s7DtvXMykusVV1I+H6pTfKBjuVMhIkzswEyD+PP+FxbKkJZRX0HDv39ltevRs+yk
|
||||
# ZU9uP5tGCOwrd1JqPYBKnBCjIZb08W7tHdZbYDL+ve2k9qBLmGMIcuJ/9AXzQHJS
|
||||
# 0YJV24161ZpddNUoLevgvRTdU1nR8DMsZ0RwPZXA9q8Z4jEQbQW0OYwfEr53tTRw
|
||||
# z+o4T45hAta+SbpHg4dThdS6wv6gF849BseXSUx8nggduBE+EAc=
|
||||
# SIG # End signature block
|
||||
|
@@ -1,5 +1,5 @@
|
||||
Fido: Full ISO Download Script (for Windows retail ISOs)
|
||||
========================================================
|
||||
Fido: A PowerShell download script for Windows ISOs and UEFI Shell
|
||||
==================================================================
|
||||
|
||||
[](https://www.gnu.org/licenses/gpl-3.0.en.html)
|
||||
[](https://github.com/pbatard/Fido/releases)
|
||||
@@ -9,7 +9,7 @@ Description
|
||||
|
||||
Fido is a PowerShell script that is primarily designed to be used in [Rufus](https://github.com/pbatard/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.
|
||||
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 and Windows 10), it only does so after actively forcing users to jump through a lot of unwarranted hoops,
|
||||
|
Reference in New Issue
Block a user