Alors que les entreprises du monde entier se préparent à passer à la dernière version du système d’exploitation de Microsoft, de nombreux professionnels de l’informatique et fournisseurs de services gérés (MSP) cherchent des moyens de contrôler la transition. Si votre entreprise n’est pas tout à fait prête à faire le saut et que vous cherchez une méthode pour désactiver la mise à niveau automatique de Windows 11, vous avez atterri sur le bon blog. Nous allons ici disséquer un script PowerShell inestimable qui désactive efficacement les mises à niveau de Windows 11.
La nécessité d’un contrôle
Avant de plonger dans le script, il convient d’examiner les raisons pour lesquelles on peut vouloir désactiver la mise à niveau Windows 11. Windows 11 s’accompagne d’une multitude de nouvelles fonctionnalités et de mises à jour de sécurité, mais tous les professionnels de l’informatique savent que nouveau ne veut pas toujours dire meilleur, du moins pas tout de suite. Les nouvelles versions peuvent rompre la compatibilité avec les logiciels existants ou créer des problèmes imprévus qui ne peuvent être gérés qu’une fois connus. Par conséquent, le fait de pouvoir contrôler le moment de la mise à niveau peut vous éviter des problèmes inattendus.
Le script :
Ce script PowerShell sert de mécanisme de contrôle. Plus précisément, il désactive la mise à niveau Windows 11 en verrouillant la TargetReleaseVersion et la TargetReleaseVersionInfo sur la version actuellement installée de votre système d’exploitation Windows. Pour une équipe de professionnels de l’informatique ou d’une entreprise MSP, il s’agit d’une véritable mine d’or, qui permet de gérer des centaines ou des milliers de machines de manière optimale.
<# .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 {}
Accédez à plus de 700 scripts dans le Dojo NinjaOne
Points forts du script
- Droits d’administrateur: Le script comprend une fonction permettant de vérifier s’il est exécuté avec des privilèges d’administrateur, ce qui est essentiel pour modifier les paramètres du système.
- Modifications du registre: Le script modifie les paramètres clés du registre, garantissant que les machines adhèrent à la politique de maintien de la version actuelle.
- Évolutivité: Ce script peut être déployé sur plusieurs machines, ce qui en fait un outil précieux pour les MSP.
- Aucun paramètre n’est nécessaire: Simplifiant l’expérience de l’utilisateur, le script n’a besoin d’aucun paramètre pour s’exécuter.
Comment utiliser le script
- Sauvegarder le code: Enregistrez le script dans un fichier avec une extension .ps1, par exemple DisableWin11Upgrade.ps1.
- Exécuter en tant qu’administrateur: Ouvrez PowerShell en tant qu’administrateur et naviguez jusqu’à l’endroit où votre script est enregistré.
- Exécuter: Exécutez le fichier DisableWin11Upgrade.ps1.
Si le script s’exécute correctement, il modifiera les entrées de registre nécessaires pour désactiver la mise à niveau automatique Windows 11.
Intégration du script à NinjaOne
L’intégration entre ce script PowerShell pour désactiver la mise à niveau automatique Windows 11 et NinjaOne peut simplifier davantage votre processus de gestion des mises à niveau.
Les étapes de l’intégration :
- Télécharger le script: Utilisez le dépôt de scripts de NinjaOne pour télécharger le script PowerShell.
- Affectation des stratégies: Une fois téléchargé, le script peut être affecté à diverses stratégies qui contrôlent un groupe de systèmes ou des environnements clients spécifiques.
- Exécution du calendrier: Grâce à NinjaOne, vous pouvez configurer le script pour qu’il s’exécute à des intervalles spécifiques ou pendant les heures de maintenance.
- Surveillance et alertes: Configurez NinjaOne pour qu’il surveille spécifiquement les clés de registre modifiées par le script. Ainsi, vous serez immédiatement alerté en cas de changement.
- Rapport: Utilisez les outils de reporting de NinjaOne pour vérifier le succès du script sur l’ensemble des systèmes gérés.
En combinant ce script PowerShell avec les fonctionnalités performantes de NinjaOne, vous obtenez non seulement une méthode pour désactiver la mise à niveau Windows 11, mais aussi un système pour gérer, surveiller et établir des rapports à grande échelle. Il ajoute une couche supplémentaire d’efficacité et de sécurité à votre environnement informatique.
Conclusions
Pour les professionnels de l’informatique et les MSP qui gèrent un grand nombre de systèmes, ce script PowerShell offre un moyen fiable et efficace de désactiver la mise à niveau Windows 11. Il ne s’agit pas seulement de résister au changement, mais aussi de le maîtriser pour mieux l’adapter aux besoins de votre entreprise. Vous n’êtes plus soumis aux effets indésirables des mises à jour automatiques qui pourraient potentiellement perturber votre environnement informatique soigneusement organisé.
Vous pourriez également être intéressé par l’article Comment activer la mise à niveau automatique de Windows 11 avec PowerShell.