Hoe Automatische Windows 11-upgrade Uitschakelen [PowerShell Script]

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

Toegang Krijgen

Hoogtepunten van het Script

  1. Beheerdersrechten: Het script bevat een functie om te controleren of het wordt uitgevoerd met beheerdersrechten-kritisch voor het wijzigen van systeeminstellingen.
  2. 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.
  3. Schaalbaarheid: Dit script kan worden ingezet op meerdere machines, waardoor het een hulpmiddel van onschatbare waarde is voor MSP’s.
  4. Geen parameters nodig: Om de gebruikerservaring te vereenvoudigen, heeft het script geen parameters nodig om te worden uitgevoerd.

Het script gebruiken

  1. Sla de code op: Sla het script op in een bestand met een .ps1 extensie, bijvoorbeeld DisableWin11Upgrade.ps1.
  2. Uitvoeren als Beheerder: Open PowerShell als beheerder en navigeer naar de plaats waar uw script is opgeslagen.
  3. 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:

  1. Script uploaden: Gebruik de scriptopslagplaats van NinjaOne om het PowerShell-script te uploaden.
  2. Beleidsopdracht: Eenmaal geĂĽpload kan het script worden toegewezen aan verschillende beleidsregels die een groep systemen of specifieke clientomgevingen controleren.
  3. Uitvoering schema: Met de scheduler van NinjaOne kun je het script zo instellen dat het op bepaalde intervallen of tijdens onderhoudsvensters wordt uitgevoerd.
  4. 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.
  5. 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.

Next Steps

Building an efficient and effective IT team requires a centralized solution that acts as your core service deliver tool. NinjaOne enables IT teams to monitor, manage, secure, and support all their devices, wherever they are, without the need for complex on-premises infrastructure.

Learn more about NinjaOne Remote Script Deployment, check out a live tour, or start your free trial of the NinjaOne platform.

Categorieën:

Dit vindt u misschien ook leuk

Ă—

Zie NinjaOne in actie!

Door dit formulier in te dienen geef ik aan akkoord te gaan met het privacybeleid van NinjaOne.

NinjaOne Algemene Voorwaarden

Door op de knop “Ik accepteer” hieronder te klikken, geeft u aan dat u de volgende wettelijke voorwaarden en onze Gebruiksvoorwaarden accepteert:

  • Eigendomsrechten: NinjaOne bezit en blijft eigenaar van alle rechten, aanspraken en belangen in en op het script (inclusief het auteursrecht). NinjaOne geeft u een beperkte licentie om het script te gebruiken in overeenstemming met deze wettelijke voorwaarden.
  • Gebruiksbeperking: U mag het script alleen gebruiken voor uw legitieme persoonlijke of interne bedrijfsdoeleinden en u mag het script niet delen met derden.
  • Republicatieverbod: Het is onder geen beding toegestaan om het script opnieuw te publiceren in een scriptbibliotheek die toebehoort aan of onder controle staat van een andere softwareleverancier.
  • Garantie disclaimer: Het script wordt geleverd “zoals het is” en “zoals het beschikbaar is”, zonder enige vorm van garantie. NinjaOne belooft of garandeert niet dat het script vrij van gebreken zal zijn of dat het aan uw specifieke behoeften of verwachtingen zal voldoen.
  • Risicoaanvaarding: Het gebruik van het script is op eigen risico. U erkent dat het gebruik van het script bepaalde inherente risico’s met zich meebrengt en u begrijpt en aanvaardt elk van deze risico’s.
  • Verklaring van afstand en vrijwaring: U zult NinjaOne niet verantwoordelijk houden voor enige nadelige of onbedoelde gevolgen die voortvloeien uit uw gebruik van het script en u doet afstand van alle wettelijke of billijke rechten of rechtsmiddelen die u tegen NinjaOne kunt hebben met betrekking tot uw gebruik van het script.
  • EULA: Als u een NinjaOne-klant bent, is uw gebruik van het script onderworpen aan de licentieovereenkomst voor eindgebruikers die op u van toepassing is (EULA).