Terwijl bedrijven over de hele wereld zich voorbereiden op de overgang naar de nieuwste versie van het besturingssysteem van Microsoft, zijn veel IT-professionals en Managed Service Providers (MSP’s) op zoek naar manieren om de overgang in goede banen te leiden. Als uw organisatie nog niet klaar is om de sprong te wagen en u op zoek bent naar een methode om de automatische Windows 11 upgrade uit te schakelen, dan bent u op de juiste blog beland. Hier ontleden we een PowerShell-script van onschatbare waarde dat Windows 11-upgrades efficiënt uitschakelt.
De Noodzaak van Controle
Voordat we in het script duiken, is het de moeite waard om te bedenken waarom u Windows 11 updates zou willen uitschakelen. Windows 11 wordt geleverd met een heleboel nieuwe functies en beveiligingsupgrades, maar elke IT-professional weet dat nieuw niet altijd beter betekent – tenminste, niet meteen. Nieuwe versies kunnen de compatibiliteit met bestaande software verbreken of onvoorziene problemen veroorzaken die alleen beheersbaar zijn als ze bekend zijn. Daarom kan de macht om te bepalen wanneer u moet upgraden u onverwachte kopzorgen besparen.
Het Script:
Dit PowerShell-script dient als controlemechanisme. In het bijzonder schakelt het de Windows 11 upgrade uit door de TargetReleaseVersion en TargetReleaseVersionInfo te vergrendelen op de huidige geïnstalleerde versie van uw Windows OS. Voor een team van IT-professionals of MSP’s is dit goud waard; het biedt een naadloze manier om honderden of duizenden machines te beheren.
<# .SYNOPSIS Disables Windows 11 upgrade. .DESCRIPTION Disables Windows 11 upgrade by locking the TargetReleaseVersion and TargetReleaseVersionInfo to the currently installed version. .EXAMPLE No parameters needed Disables Windows 11 upgrade. .OUTPUTS None .NOTES Minimum OS Architecture Supported: Windows 10 Release Notes: Disallows the upgrade offer to Windows 11 to appear to users (c) 2023 NinjaOne By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). #> [CmdletBinding()] param () begin { function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator) } function Set-ItemProp { param ( $Path, $Name, $Value, [ValidateSet("DWord", "QWord", "String", "ExpandedString", "Binary", "MultiString", "Unknown")] $PropertyType = "DWord" ) # Do not output errors and continue $ErrorActionPreference = [System.Management.Automation.ActionPreference]::SilentlyContinue if (-not $(Test-Path -Path $Path)) { # Check if path does not exist and create the path New-Item -Path $Path -Force | Out-Null } if ((Get-ItemProperty -Path $Path -Name $Name)) { # Update property and print out what it was changed from and changed to $CurrentValue = Get-ItemProperty -Path $Path -Name $Name try { Set-ItemProperty -Path $Path -Name $Name -Value $Value -Force -Confirm:$false -ErrorAction Stop | Out-Null } catch { Write-Error $_ } Write-Host "$Path$Name changed from $CurrentValue to $(Get-ItemProperty -Path $Path -Name $Name)" } else { # Create property with value try { New-ItemProperty -Path $Path -Name $Name -Value $Value -PropertyType $PropertyType -Force -Confirm:$false -ErrorAction Stop | Out-Null } catch { Write-Error $_ } Write-Host "Set $Path$Name to $(Get-ItemProperty -Path $Path -Name $Name)" } $ErrorActionPreference = [System.Management.Automation.ActionPreference]::Continue } } process { if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." exit 1 } # Get Current Version $release = (Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion" -Name ReleaseId).ReleaseId $ver = (Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion" -Name DisplayVersion).DisplayVersion $TargetReleaseVersion = if ($release -eq '2009') { $ver } Else { $release } # Block Windows 11 Upgrade by changing the target release version to the current version try { Set-ItemProp -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsWindowsUpdate" -Name "TargetReleaseVersion" -Value 1 -PropertyType DWord Set-ItemProp -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsWindowsUpdate" -Name "TargetReleaseVersionInfo" -Value "$TargetReleaseVersion" -PropertyType String Set-ItemProp -Path "HKLM:SOFTWAREMicrosoftWindowsUpdateUXSettings" -Name "SvOfferDeclined" -Value 1646085160366 -PropertyType QWord } catch { Write-Error $_ Write-Host "Failed to block Windows 11 Upgrade." exit 1 } exit 0 } end {}
Toegang tot meer dan 300 scripts in de NinjaOne Dojo
Hoogtepunten van het Script
- Beheerdersrechten: Het script bevat een functie om te controleren of het wordt uitgevoerd met beheerdersrechten-kritisch voor het wijzigen van systeeminstellingen.
- Registerwijzigingen: Het script wijzigt de instellingen van de registersleutel en zorgt ervoor dat machines zich houden aan het beleid om op hun huidige versie te blijven.
- Schaalbaarheid: Dit script kan worden ingezet op meerdere machines, waardoor het een hulpmiddel van onschatbare waarde is voor MSP’s.
- Geen parameters nodig: Om de gebruikerservaring te vereenvoudigen, heeft het script geen parameters nodig om te worden uitgevoerd.
Het script gebruiken
- Sla de code op: Sla het script op in een bestand met een .ps1 extensie, bijvoorbeeld DisableWin11Upgrade.ps1.
- Uitvoeren als Beheerder: Open PowerShell als beheerder en navigeer naar de plaats waar uw script is opgeslagen.
- Uitvoeren: Voer .DisableWin11Upgrade.ps1 uit.
Als het script succesvol wordt uitgevoerd, wijzigt het de benodigde registervermeldingen om automatische Windows 11-upgrades uit te schakelen.
Het Script Integreren met NinjaOne
De integratie tussen dit PowerShell script om de automatische Windows 11 upgrade uit te schakelen en NinjaOne kan uw upgradebeheerproces verder stroomlijnen.
Stappen om te integreren:
- Script uploaden: Gebruik de scriptopslagplaats van NinjaOne om het PowerShell-script te uploaden.
- Beleidsopdracht: Eenmaal geüpload kan het script worden toegewezen aan verschillende beleidsregels die een groep systemen of specifieke clientomgevingen controleren.
- Uitvoering schema: Met de scheduler van NinjaOne kun je het script zo instellen dat het op bepaalde intervallen of tijdens onderhoudsvensters wordt uitgevoerd.
- Bewaking & Waarschuwingen: Configureer NinjaOne om de specifieke registersleutels te controleren die het script wijzigt. Op deze manier wordt u onmiddellijk gewaarschuwd als er wijzigingen plaatsvinden.
- Rapportage: Gebruik de rapportagetools van NinjaOne om het succes van het script op uw beheerde systemen te controleren.
Door dit PowerShell-script te combineren met de robuuste mogelijkheden van NinjaOne krijgt u niet alleen een methode om Windows 11-upgrades uit te schakelen, maar ook een systeem om deze activiteit op schaal te beheren, te bewaken en erover te rapporteren. Het voegt een extra laag van efficiëntie en beveiliging toe aan uw IT-omgeving.
Slotbeschouwingen:
Voor IT-professionals en MSP’s die te maken hebben met een aanzienlijk aantal systemen, biedt dit PowerShell-script een betrouwbare en efficiënte manier om Windows 11-upgrades over de hele linie uit te schakelen. Het gaat niet alleen om het tegengaan van verandering, maar ook om het beter afstemmen ervan op de behoeften van uw organisatie. U bent niet langer onderworpen aan de grillen van automatische updates die uw zorgvuldig georkestreerde IT-omgeving kunnen verstoren.
Misschien bent u ook geïnteresseerd in Hoe automatische Windows 11-upgrade inschakelen met PowerShell.