Retour

Effectuez la mise à niveau de Windows 10 vers Windows 11

Découvrez comment vérifier l'éligibilité d'un appareil Windows 10 à une mise à niveau vers Windows 11 et comment automatiser le processus de mise à niveau à l'aide des stratégies FleetDM et des scripts PowerShell, notamment la classification des appareils, l'évaluation de l'éligibilité et le déclenchement de l'installation de la mise à niveau.

Cet article décrit en détail le processus permettant de vérifier quels appareils Windows 10 sont éligibles à une mise à niveau vers Windows 11 et d'initier automatiquement cette mise à niveau à l'aide des stratégies FleetDM et des scripts PowerShell .

La procédure comprend :

  • Détection et stockage des composants système requis (TPM 2.0 et Secure Boot) dans le registre
  • Valider les exigences matérielles et logicielles pour déterminer l'éligibilité à la mise à niveau
  • Exécution d'un téléchargement automatisé et d'une installation silencieuse de Windows 11 sur des appareils compatibles

 

Classer les appareils dotés d'une puce TPM et du démarrage sécurisé.

Créer la politique de détection (registre FleetDM)

Utilisez la requête suivante pour vérifier la présence des clés de registre qui stockent l'état du TPM et du démarrage sécurisé :

SELECT 1 WHERE EXISTS (      SELECT 1 FROM registry      WHERE path = 'HKEY_LOCAL_MACHINE\Software\FleetDM\TPMVersion'    )    AND EXISTS (      SELECT 1 FROM registry      WHERE path = 'HKEY_LOCAL_MACHINE\Software\FleetDM\SecureBoot'    );

Exécutez le script associé (remplissez le registre)

Joignez ce script PowerShell à la stratégie ci-dessus. Il détecte la version du module TPM et l'état du démarrage sécurisé, puis les enregistre dans le registre Windows pour FleetDM.

$TPM = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm$SecureBoot = Confirm-SecureBootUEFI$TPMVersion = $TPM.SpecVersion$SecureBootEnabled = if ($SecureBoot) { 1 } else { 0 }# Write values to the registry (example)New-Item -Path "HKLM:\Software\FleetDM" -Force | Out-NullSet-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "TPMVersion" -Value $TPMVersionSet-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "SecureBoot" -Value $SecureBootEnabled

Résultat attendu : les clés HKLM\Software\FleetDM\TPMVersion et HKLM\Software\FleetDM\SecureBoot sont créées/mises à jour.


 

Évaluer l'éligibilité d'un appareil Windows 10 à Windows 11

Créez la politique suivante pour valider les exigences minimales (RAM, cœurs de processeur, architecture, TPM 2.0, démarrage sécurisé) et exclure les appareils non conformes.

SELECT 1 FROM os_version as os JOIN system_info as si WHERE    os.name NOT LIKE 'Microsoft Windows 10%'    OR si.physical_memory < 4 * 1024 * 1024 * 1024    OR si.cpu_physical_cores < 2    OR si.cpu_type NOT LIKE '%x86_64%'    OR NOT EXISTS (      SELECT * FROM registry      WHERE path = 'HKEY_LOCAL_MACHINE\Software\FleetDM\TPMVersion'        AND data LIKE '2%'    )    OR NOT EXISTS (      SELECT * FROM registry      WHERE path = 'HKEY_LOCAL_MACHINE\Software\FleetDM\SecureBoot'        AND data = '1'    );

Interprétation : la requête renvoie 1 si l’appareil n’est pas un Windows 10 conforme. Utilisez-la comme politique de non-conformité pour ne conserver que les appareils éligibles (ceux pour lesquels la requête ne renvoie pas 1).


 

Déclencher la mise à niveau vers Windows 11 (appareils compatibles)

Joignez le script de déploiement ci-dessous aux appareils compatibles. Il télécharge l'ISO de Windows 11, monte l'image, copie les sources localement et planifie une installation silencieuse sous SYSTEM .

# ImportsImport-Module BitsTransfer# Variables$uri = "https://production-bucket-public-files.s3.eu-west-3.amazonaws.com/Win11_24H2_French_x64.iso"$destination = "C:\Win11.iso"$log = "C:\logs\download_win11_iso.log"# Create the logs folder if it doesn't existif (-not (Test-Path -Path "C:\logs")) {    New-Item -Path "C:\logs" -ItemType Directory | Out-Null}# Start the downloadtry {    "`n[$(Get-Date)] Starting download..." | Out-File -Append $log    if (-not (Test-Path $destination)){      Start-BitsTransfer -Source $uri -Destination $destination    }    "`n[$(Get-Date)] Download completed successfully." | Out-File -Append $log} catch {    "`n[$(Get-Date)] Error during download: $_" | Out-File -Append $log}# Additional variables$isoPath = "C:\Win11.iso"$setupFolder = "C:\Temp\Win11Files"$taskName = "Win11SilentUpgrade"# Step 1 - Mount the ISOMount-DiskImage -ImagePath $isoPath -PassThru | Out-NullStart-Sleep -Seconds 2$vol = Get-Volume -DiskImage (Get-DiskImage -ImagePath $isoPath)$driveLetter = $vol.DriveLetter# Step 2 - Copy ISO content locallyNew-Item -ItemType Directory -Force -Path $setupFolder | Out-NullCopy-Item "$driveLetter`:\*" -Destination $setupFolder -Recurse# Unmount the ISODismount-DiskImage -ImagePath $isoPath# Step 3 - Create and schedule the installation task$action = New-ScheduledTaskAction -Execute "C:\Temp\Win11Files\setup.exe" -Argument "/auto upgrade /migratedrivers none /resizerecoverypartition enable /dynamicupdate disable /eula accept /quiet /noreboot /uninstall disable /compat ignorewarning /copylogs C:\logs\WinSetup.log"$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest$task = New-ScheduledTask -Action $action -Principal $principal -Trigger (New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1))Register-ScheduledTask -TaskName $taskName -InputObject $task -Force# Step 4 - Start the task immediatelyStart-ScheduledTask -TaskName $taskName

Cet article vous a-t-il aidé ?

Give feedback about this article

Vous ne trouvez pas ce que vous cherchez ?

Notre équipe de service client est là pour vous.

Nous contacter

Knowledge Base Software powered by Helpjuice