|
|
@ -0,0 +1,196 @@ |
|
|
|
<# |
|
|
|
.SYNOPSIS |
|
|
|
Get direct URL of Sophia Script archive, depending on which Windows or PowerShell versions are used to |
|
|
|
|
|
|
|
.SYNOPSIS |
|
|
|
For example, if you start script on Windows 11 via PowerShell 5.1 you will start downloading Sophia Script for Windows 11 PowerShell 5.1 |
|
|
|
|
|
|
|
#> |
|
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 |
|
|
|
|
|
|
|
if ($Host.Version.Major -eq 5) |
|
|
|
{ |
|
|
|
# Progress bar can significantly impact cmdlet performance |
|
|
|
# https://github.com/PowerShell/PowerShell/issues/2138 |
|
|
|
$Script:ProgressPreference = "SilentlyContinue" |
|
|
|
} |
|
|
|
|
|
|
|
$Parameters = @{ |
|
|
|
Uri = "https://api.github.com/repos/farag2/Sophia-Script-for-Windows/releases/latest" |
|
|
|
UseBasicParsing = $true |
|
|
|
} |
|
|
|
$LatestGitHubRelease = (Invoke-RestMethod @Parameters).tag_name |
|
|
|
|
|
|
|
if (-not $LatestGitHubRelease) |
|
|
|
{ |
|
|
|
Write-Warning -Message "https://api.github.com/repos/farag2/Sophia-Script-for-Windows/releases/latest is unreachable. Please fix connection or change your DNS records." |
|
|
|
Write-Information -MessageData "" -InformationAction Continue |
|
|
|
|
|
|
|
if ((Get-CimInstance -ClassName CIM_ComputerSystem).HypervisorPresent) |
|
|
|
{ |
|
|
|
$DNS = (Get-NetRoute | Where-Object -FilterScript {$_.DestinationPrefix -eq "0.0.0.0/0"} | Get-NetAdapter | Get-DnsClientServerAddress -AddressFamily IPv4).ServerAddresses |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
$DNS = (Get-NetAdapter -Physical | Get-NetIPInterface -AddressFamily IPv4 | Get-DnsClientServerAddress -AddressFamily IPv4).ServerAddresses |
|
|
|
} |
|
|
|
Write-Warning -Message "Your DNS are $(if ($DNS.Count -gt 1) {$DNS -join ', '} else {$DNS})" |
|
|
|
|
|
|
|
pause |
|
|
|
exit |
|
|
|
} |
|
|
|
|
|
|
|
$Parameters = @{ |
|
|
|
Uri = "https://raw.githubusercontent.com/farag2/Sophia-Script-for-Windows/master/sophia_script_versions.json" |
|
|
|
UseBasicParsing = $true |
|
|
|
} |
|
|
|
$JSONVersions = Invoke-RestMethod @Parameters |
|
|
|
|
|
|
|
switch ((Get-CimInstance -ClassName Win32_OperatingSystem).BuildNumber) |
|
|
|
{ |
|
|
|
"17763" |
|
|
|
{ |
|
|
|
# Check for Windows 10 LTSC 2019 |
|
|
|
if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName) -match "LTSC 2019") |
|
|
|
{ |
|
|
|
$LatestRelease = $JSONVersions.Sophia_Script_Windows_10_LTSC2019 |
|
|
|
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.LTSC.2019.v$LatestRelease.zip" |
|
|
|
$Parameters = @{ |
|
|
|
Uri = $URL |
|
|
|
OutFile = "$DownloadsFolder\Sophia.Script.zip" |
|
|
|
UseBasicParsing = $true |
|
|
|
Verbose = $true |
|
|
|
} |
|
|
|
Invoke-WebRequest @Parameters |
|
|
|
|
|
|
|
$Version = "Windows_10_LTSC2019" |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Write-Verbose -Message "Windows version is not supported. Update your Windows" -Verbose |
|
|
|
|
|
|
|
# Receive updates for other Microsoft products when you update Windows |
|
|
|
(New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "") |
|
|
|
|
|
|
|
# Check for updates |
|
|
|
Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan |
|
|
|
|
|
|
|
# Open the "Windows Update" page |
|
|
|
Start-Process -FilePath "ms-settings:windowsupdate" |
|
|
|
|
|
|
|
pause |
|
|
|
exit |
|
|
|
} |
|
|
|
} |
|
|
|
"19044" |
|
|
|
{ |
|
|
|
# Check for Windows 10 LTSC 2021 |
|
|
|
if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName) -match "LTSC 2021") |
|
|
|
{ |
|
|
|
$LatestRelease = $JSONVersions.Sophia_Script_Windows_10_LTSC2021 |
|
|
|
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.LTSC.2021.v$LatestRelease.zip" |
|
|
|
$Parameters = @{ |
|
|
|
Uri = $URL |
|
|
|
OutFile = "$DownloadsFolder\Sophia.Script.zip" |
|
|
|
UseBasicParsing = $true |
|
|
|
Verbose = $true |
|
|
|
} |
|
|
|
Invoke-WebRequest @Parameters |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Write-Verbose -Message "Windows version is not supported. Update your Windows" -Verbose |
|
|
|
|
|
|
|
# Receive updates for other Microsoft products when you update Windows |
|
|
|
(New-Object -ComObject Microsoft.Update.ServiceManager).AddService2("7971f918-a847-4430-9279-4a52d1efe18d", 7, "") |
|
|
|
|
|
|
|
# Check for updates |
|
|
|
Start-Process -FilePath "$env:SystemRoot\System32\UsoClient.exe" -ArgumentList StartInteractiveScan |
|
|
|
|
|
|
|
# Open the "Windows Update" page |
|
|
|
Start-Process -FilePath "ms-settings:windowsupdate" |
|
|
|
|
|
|
|
pause |
|
|
|
exit |
|
|
|
} |
|
|
|
} |
|
|
|
"19045" |
|
|
|
{ |
|
|
|
if ($Host.Version.Major -eq 5) |
|
|
|
{ |
|
|
|
$LatestRelease = $JSONVersions.Sophia_Script_Windows_10_PowerShell_5_1 |
|
|
|
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.v$LatestRelease.zip" |
|
|
|
$Parameters = @{ |
|
|
|
Uri = $URL |
|
|
|
OutFile = "$DownloadsFolder\Sophia.Script.zip" |
|
|
|
UseBasicParsing = $true |
|
|
|
Verbose = $true |
|
|
|
} |
|
|
|
Invoke-WebRequest @Parameters |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
$LatestRelease = (Invoke-RestMethod @Parameters).Sophia_Script_Windows_10_PowerShell_7 |
|
|
|
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.10.PowerShell.7.v$LatestRelease.zip" |
|
|
|
$Parameters = @{ |
|
|
|
Uri = $URL |
|
|
|
OutFile = "$DownloadsFolder\Sophia.Script.zip" |
|
|
|
UseBasicParsing = $true |
|
|
|
Verbose = $true |
|
|
|
} |
|
|
|
Invoke-WebRequest @Parameters |
|
|
|
} |
|
|
|
} |
|
|
|
{$_ -ge 22631} |
|
|
|
{ |
|
|
|
# Check for Windows 11 LTSC 2024 |
|
|
|
if ((Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName) -notmatch "LTSC 2024") |
|
|
|
{ |
|
|
|
if ($Host.Version.Major -eq 5) |
|
|
|
{ |
|
|
|
$LatestRelease = $JSONVersions.Sophia_Script_Windows_11_PowerShell_5_1 |
|
|
|
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.11.v$LatestRelease.zip" |
|
|
|
$Parameters = @{ |
|
|
|
Uri = $URL |
|
|
|
OutFile = "$DownloadsFolder\Sophia.Script.zip" |
|
|
|
UseBasicParsing = $true |
|
|
|
Verbose = $true |
|
|
|
} |
|
|
|
Invoke-WebRequest @Parameters |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
$LatestRelease = $JSONVersions.Sophia_Script_Windows_11_PowerShell_7 |
|
|
|
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.11.PowerShell.7.v$LatestRelease.zip" |
|
|
|
$Parameters = @{ |
|
|
|
Uri = $URL |
|
|
|
OutFile = "$DownloadsFolder\Sophia.Script.zip" |
|
|
|
UseBasicParsing = $true |
|
|
|
Verbose = $true |
|
|
|
} |
|
|
|
Invoke-WebRequest @Parameters |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
$LatestRelease = $JSONVersions.Sophia_Script_Windows_11_LTSC2024 |
|
|
|
$URL = "https://github.com/farag2/Sophia-Script-for-Windows/releases/download/$LatestGitHubRelease/Sophia.Script.for.Windows.11.LTSC.2024.v$LatestRelease.zip" |
|
|
|
$Parameters = @{ |
|
|
|
Uri = $URL |
|
|
|
OutFile = "$DownloadsFolder\Sophia.Script.zip" |
|
|
|
UseBasicParsing = $true |
|
|
|
Verbose = $true |
|
|
|
} |
|
|
|
Invoke-WebRequest @Parameters |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
# Downloads folder |
|
|
|
$Downloads = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}" |
|
|
|
$packageArgs = @{ |
|
|
|
packageName = $env:ChocolateyPackageName |
|
|
|
unzipLocation = $Downloads |
|
|
|
url = $URL |
|
|
|
} |
|
|
|
Install-ChocolateyZipPackage @packageArgs |