added script
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# NOTE: This script will only have an effect Windows 10 Professional and Enterprise versions
|
||||
|
||||
# Return a Powershell version object from a string
|
||||
Function Get-Version {
|
||||
param([Parameter(Mandatory=$true)][string]$Version)
|
||||
[int]$Sets = 4
|
||||
$VersionArray = $Version.Split('.')
|
||||
If ( $VersionArray.Count -le $Sets ) { $Sets = $VersionArray.Count }
|
||||
For ($i = 0; $i -le ($Sets - 1); $i++) {
|
||||
$Return = '{0}.{1}' -f $Return, $VersionArray[$i] }
|
||||
Return [version]$Return.Trim('.')
|
||||
}
|
||||
|
||||
# Compare current Windows version with a supplied version
|
||||
# The value supplied must be a string and must include at least 1 decimal
|
||||
# Use this page to match build numbers and servicing release versions: https://docs.microsoft.com/en-us/windows/release-health/release-information
|
||||
Function IsWindowsVersion {
|
||||
param(
|
||||
[Parameter(Mandatory=$true,ParameterSetName='gt')][string]$gt,
|
||||
[Parameter(Mandatory=$true,ParameterSetName='ge')][string]$ge,
|
||||
[Parameter(Mandatory=$true,ParameterSetName='lt')][string]$lt,
|
||||
[Parameter(Mandatory=$true,ParameterSetName='le')][string]$le,
|
||||
[Parameter(Mandatory=$true,ParameterSetName='eq')][string]$eq
|
||||
)
|
||||
[version]$WindowsVersion = [System.Environment]::OSVersion.Version
|
||||
switch ($PSCmdlet.ParameterSetName) {
|
||||
'gt' { If ( $WindowsVersion -gt (Get-Version $gt) ) { Return $true } Else { Return $false } }
|
||||
'ge' { If ( $WindowsVersion -ge (Get-Version $ge) ) { Return $true } Else { Return $false } }
|
||||
'lt' { If ( $WindowsVersion -lt (Get-Version $lt) ) { Return $true } Else { Return $false } }
|
||||
'le' { If ( $WindowsVersion -le (Get-Version $le) ) { Return $true } Else { Return $false } }
|
||||
'eq' { If ( $WindowsVersion -eq (Get-Version $eq) ) { Return $true } Else { Return $false } }
|
||||
}
|
||||
}
|
||||
|
||||
# Make sure we're running at least Windows 10 1803 but not higher than Windows 10 21H2
|
||||
# This is because the Group Policy setting used below was introduced in 1803, so anything before that won't have any effect
|
||||
If ( (IsWindowsVersion -ge "10.0.17134") -and (IsWindowsVersion -le "10.0.19044") ) {
|
||||
|
||||
# This is the version of Windows 10 you want to update to, but no further
|
||||
$MaxWindowsVersion = "21H1"
|
||||
|
||||
$BaseRegPath = "HKLM:SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
|
||||
If (-not (Test-Path $BaseRegPath) ) { New-Item -Path $BaseRegPath -Force | Out-Null }
|
||||
|
||||
New-ItemProperty -Path $BaseRegPath -Name "ProductVersion" -Value "Windows 10" -PropertyType String -Force | Out-Null
|
||||
New-ItemProperty -Path $BaseRegPath -Name "TargetReleaseVersion" -Value 1 -PropertyType DWord -Force | Out-Null
|
||||
New-ItemProperty -Path $BaseRegPath -Name "TargetReleaseVersionInfo" -Value "${MaxWindowsVersion}" -PropertyType String -Force | Out-Null
|
||||
|
||||
# Restart the Windows Update service if it's currently running
|
||||
If ( $(Get-Service -Name wuauserv).Status -eq "Running" ) { Restart-Service -Name wuauserv -Force -ErrorAction SilentlyContinue }
|
||||
}
|
||||
Reference in New Issue
Block a user