Migrer vers Windows 11 avec PSADT

Découvrez une méthode pratique pour mettre à niveau les appareils à l'aide de PSADT. Une approche fiable pour les équipes informatiques qui cherchent à simplifier les migrations vers Windows 11.
Image de Perica

Perica

Dans nos précédents articles de blog, nous avons exploré différentes approches de la migration vers Windows 11 : en utilisant SCCM, par l'intermédiaire de XOAP, via les GPO et les clés de registre et Mise à jour de Windows dans les paramètres. Dans ce billet, nous allons vous présenter une autre méthode - déployer le paquet de mise à niveau de Windows 11 à l'aide de notre logiciel PowerShell App Deployment Toolkit (Téléchargez-le ici gratuitement).

Utiliser PSADT pour migrer de Windows 10 à Windows 11

Pour commencer, extraire le contenu de votre fichier ISO Windows 11 et les inclure dans votre paquet PSADT. Ensuite, vous utiliserez la fonction setup.exe à partir de l'ISO extraite, ainsi que des paramètres de ligne de commande spécifiques pour passer de Windows 10 à Windows 11.

Une fois votre fichier source prêt, il est temps de modifier le script "Deploy-Application.ps1". Dans la partie pré-installation, il vérifiera si une tâche planifiée existe. et le supprimer (en cas d'échec).

				
					#### (Pre-Install) Supprimer la tâche planifiée -------------------------------------------->
$DELTaskName = 'Win11Upgrade' (mise à niveau de Win11)
# Vérifier si la tâche existe
$DELTaskExists = Get-ScheduledTask -TaskName $DELTaskName -ErrorAction SilentlyContinue
if ($DELTaskExists) {
    # Supprimer la tâche
    Unregister-ScheduledTask -TaskName $DELTaskName -Confirm:$false
    Write-Output "(Pré-installation) La tâche '$DELTaskName' a été supprimée".
} else {
    Write-Output "(Pré-installation) La tâche '$DELTaskName' n'existe pas.  Passer à l'installation"
}
				
			

Dans la partie installation, une tâche planifiée sera créée et lancée. La boucle While est utilisée pour vérifier si la tâche est toujours en cours d'exécution après son lancement.

				
					###># CREATE SCHEDULED TASK -------------------------------------------------------->
    $STExecutable = "$dirfiles\ISO\Setup.exe"
    $STArguments = "/Auto Upgrade /EULA accept /NoReboot"
    $STTaskName = "Win11Upgrade"
    $STTriggerTime = (Get-Date).AddSeconds(15)
    $STPriority = 4
    $STTrigger = New-ScheduledTaskTrigger -Once -At $STTriggerTime
    $STSettings = New-ScheduledTaskSettingsSet -StartWhenAvailable -Priority $STPriority -RunOnlyIfNetworkAvailable -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
    # Créer une nouvelle action de tâche planifiée
    $STAction = New-ScheduledTaskAction -Execute $STExecutable -Argument $STArguments -WorkingDirectory (Split-Path $STExecutable)
    # Créer un nouveau principal de tâche planifiée pour le compte SYSTEM
    $STPrincipal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
    # Créer et enregistrer la nouvelle tâche planifiée
    $STTask = New-ScheduledTask -Action $STAction -Trigger $STTrigger -Settings $STSettings -Principal $STPrincipal
    Register-ScheduledTask -TaskName $STTaskName -InputObject $STTask

    #### KICK OFF SCHEDULED TASK ------------------------------------------------------>
    Démarrage-Sommeil 10
    Start-ScheduledTask -TaskName "Win11Upgrade" (tâche planifiée)
    #### SURVEILLER LA TÂCHE PLANIFIÉE ------------------------------------------------------->
    $STTaskName = "Win11Upgrade"
    # Boucle jusqu'à ce que la tâche ne soit plus en cours d'exécution
    while ((Get-ScheduledTask -TaskName $STTaskName).State -eq "Running")
    {
        # Obtenir des informations sur la tâche
        $taskInfo = Get-ScheduledTaskInfo -TaskName $STTaskName
        # Vérifier si la tâche est exécutée par le SYSTÈME
        if ((Get-ScheduledTask -TaskName $STTaskName).Principal.UserId -eq "SYSTEM")
        {
            # Écriture sur la sortie
            Write-Output "$STTaskName est toujours exécuté en tant que SYSTEM"
        }
        else
        {
            Write-Output "$STTaskName est toujours en cours d'exécution, mais pas en tant que SYSTEM"
        }
        # Attendez 10 secondes avant de vérifier à nouveau
        Start-Sleep -Seconds 10
    }
    Write-Output "$STTaskName a fini de s'exécuter"
				
			

 Dans la partie post-installation, la tâche programmée créée est supprimée.

				
					#### (Post-Install) Supprimer la tâche programmée -------------------------------------------->
    $DELTaskName = "Win11Upgrade"
    # Vérifier si la tâche existe
    $DELTaskExists = Get-ScheduledTask -TaskName $DELTaskName -ErrorAction SilentlyContinue
    if ($DELTaskExists) {
        # Supprimer la tâche
        Unregister-ScheduledTask -TaskName $DELTaskName -Confirm:$false
        Write-Output "(Post-installation) La tâche '$DELTaskName' a été supprimée".
    } else {
        Write-Output "(Post-Install) La tâche '$DELTaskName' n'existe pas."
    }
				
			

Il y a quelques options à prendre en considération si vous souhaitez développer ce paquet :

  • Ajouter la vérification des prérequis de Windows 11
  • L'étendre avec des fonctions PSADT telles que :
    - Show-InstallationBienvenue
    - Afficher l'état d'avancement de l'installation
    - Afficher l'invite à l'installation et au redémarrage
  • Ajuster les options disponibles pour les tâches planifiées :
    - RunOnlyIfNetworkAvailable (Exécution uniquement si le réseau est disponible)
    - AllowStartIfOnBatteries
    - DontStopIfGoingOnBatteries
  • Ajouter d'autres paramètres à l'exécution de setup.exe (par exemple "/Product Server" comme solution de contournement pour la vérification des conditions préalables).

Vous êtes prêt à partir !

La mise à niveau vers Windows 11 avec PSADT est une option flexible si vous souhaitez mieux contrôler le processus. Avec quelques modifications de scripts, vous pouvez gérer la mise à niveau du début à la fin.

Plus d'articles de blog comme celui-ci

EUC Hexagrid 2025 by Dizzion
Actualités

L'Hexagrid de l'EUC et notre rôle

XOAP est l'un des principaux acteurs de l'écosystème de l'informatique pour l'utilisateur final (EUC). Consultez l'Hexagrid EUC pour un aperçu technique détaillé.

fr_FR
Retour en haut