Retour

Mise à niveau de Windows 10 vers Windows 11

Découvrez les avantages et le processus étape par étape pour passer de Windows 10 à Windows 11 afin d'améliorer votre expérience informatique.

Ce guide trouve les appareils Windows 10 qui peuvent passer à Windows 11 et commence ensuite la mise à niveau automatiquement. Il repose sur des politiques de flotte et des scripts PowerShell.


 

Fonctionnalité

Aperçu

Le processus comporte trois étapes :

  1. Lire l'état de TPM 2.0 et de Secure Boot de chaque appareil et l'enregistrer dans le registre Windows.
  2. Vérifier les exigences matérielles et logicielles pour décider quels appareils sont éligibles.
  3. Télécharger Windows 11 et l'installer silencieusement sur les appareils éligibles.

 

Comment utiliser

Étape 1. Enregistrer TPM et Secure Boot dans le registre

  1. Créer une politique avec la requête ci-dessous. Elle vérifie si les deux clés de registre qui contiennent l'état de TPM et de Secure Boot existent déjà.
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'
    );
  1. Attacher le script PowerShell ci-dessous à cette politique. Il lit la version de TPM et l'état de Secure Boot et écrit les deux valeurs dans le registre.
$TPM = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm
$SecureBoot = Confirm-SecureBootUEFI

$TPMVersion = $TPM.SpecVersion
$SecureBootEnabled = if ($SecureBoot) { 1 } else { 0 }

# Écrire les valeurs dans le registre (exemple)
New-Item -Path "HKLM:\Software\FleetDM" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "TPMVersion" -Value $TPMVersion
Set-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "SecureBoot" -Value $SecureBootEnabled

Lorsque le script a été exécuté, HKLM\Software\FleetDM\TPMVersion et HKLM\Software\FleetDM\SecureBoot existent et contiennent les valeurs actuelles.

Étape 2. Vérifier quels appareils Windows 10 sont éligibles

  1. Créer une deuxième politique avec la requête ci-dessous. Elle vérifie la RAM, les cœurs de CPU, l'architecture, TPM 2.0 et Secure Boot.
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'
    );
  1. Lire le résultat dans le bon sens : la requête renvoie 1 lorsque l'appareil n'est pas une machine Windows 10 éligible. Traitez-le comme une politique de non-conformité. Les appareils où elle ne renvoie pas 1 sont ceux que vous pouvez mettre à niveau.

Étape 3. Commencer la mise à niveau sur les appareils éligibles

  1. Attacher le script ci-dessous aux appareils qui ont passé l'étape 2.
  2. Le script télécharge l'ISO de Windows 11, le monte, copie les fichiers d'installation sur le disque local et planifie une installation silencieuse qui s'exécute en tant que SYSTEM.
# Imports
Import-Module BitsTransfer

# Variables
$uri = "https://production-bucket-public-files.s3.eu-west-3.amazonaws.com/Win11_24H2_French_x64.iso" # locale française — remplacer par l'ISO appropriée pour votre région
$destination = "C:\Win11.iso"
$log = "C:\logs\download_win11_iso.log"

# Créer le dossier logs si il n'existe pas
if (-not (Test-Path -Path "C:\logs")) {
    New-Item -Path "C:\logs" -ItemType Directory | Out-Null
}

# Démarrer le téléchargement
try {
    "`n[$(Get-Date)] Démarrage du téléchargement..." | Out-File -Append $log
    if (-not (Test-Path $destination)){
      Start-BitsTransfer -Source $uri -Destination $destination
    }
    "`n[$(Get-Date)] Téléchargement terminé avec succès." | Out-File -Append $log
} catch {
    "`n[$(Get-Date)] Erreur durant le téléchargement: $_" | Out-File -Append $log
}

# Variables supplémentaires
$isoPath = "C:\Win11.iso"
$setupFolder = "C:\Temp\Win11Files"
$taskName = "Win11SilentUpgrade"

# Étape 1 - Monter l'ISO
Mount-DiskImage -ImagePath $isoPath -PassThru | Out-Null
Start-Sleep -Seconds 2
$vol = Get-Volume -DiskImage (Get-DiskImage -ImagePath $isoPath)
$driveLetter = $vol.DriveLetter

# Étape 2 - Copier le contenu de l'ISO localement
New-Item -ItemType Directory -Force -Path $setupFolder | Out-Null
Copy-Item "$driveLetter`:\*" -Destination $setupFolder -Recurse

# Démonter l'ISO
Dismount-DiskImage -ImagePath $isoPath

# Étape 3 - Créer et planifier la tâche d'installation
$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

# Étape 4 - Démarrer la tâche immédiatement
Start-ScheduledTask -TaskName $taskName

Conseils et meilleures pratiques

  • Changez l'ISO avant de lancer quoi que ce soit. Le script pointe vers une ISO française. Remplacez l'URL par l'ISO pour votre langue et région.
  • Exécutez d'abord l'étape 1 et laissez-lui du temps. L'étape 2 dépend des valeurs du registre écrites à l'étape 1. Un appareil sans elles apparaît toujours comme non éligible.
  • Commencez par un petit groupe. La configuration s'exécute silencieusement et sans invite de redémarrage. Essayez sur quelques appareils avant de le faire sur toute la flotte.
  • Conservez les journaux. Le journal de téléchargement va dans C:\logs\download_win11_iso.log et le journal de configuration dans C:\logs\WinSetup.log. Consultez-les d'abord lorsque quelque chose échoue.
  • Planifiez le téléchargement. Chaque appareil récupère une ISO complète de Windows 11, donc évitez les connexions lentes ou à usage payant.

 

Dépannage et FAQ

Dépannage

  • Un appareil que vous pensiez éligible apparaît comme non éligible. Vérifiez que le script de l'étape 1 a été exécuté sur celui-ci et que les deux clés de registre existent. Ensuite, vérifiez les exigences dans la requête de l'étape 2 : Windows 10, au moins 4 Go de RAM, au moins 2 cœurs de CPU physiques, un processeur x86_64, la version TPM 2 et Secure Boot activé.
  • La mise à niveau n'a pas démarré. Ouvrez C:\logs\download_win11_iso.log pour voir si l'ISO a été téléchargée. Si c'est le cas, recherchez la tâche planifiée Win11SilentUpgrade sur l'appareil.
  • La configuration a échoué en cours de route. Lisez C:\logs\WinSetup.log, où le script indique à la configuration de Windows de copier ses journaux.

 

FAQ

  1. La requête de l'étape 2 renvoie-t-elle les appareils éligibles ?
    Non, c'est le contraire. Elle renvoie 1 pour les appareils qui ne sont pas éligibles. Les appareils éligibles sont ceux pour lesquels elle ne renvoie pas 1.
     
  2. Pourquoi enregistrer TPM et Secure Boot dans le registre ?
    Pour que la politique d'éligibilité puisse les lire avec une requête de registre simple.
     
  3. Quel compte exécute la mise à niveau ?
    SYSTEM, via une tâche planifiée que le script crée et démarre immédiatement.
     
  4. Le script redémarre-t-il l'appareil ?
    La commande de configuration inclut /noreboot, donc le script ne force pas un redémarrage lui-même.

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