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

Retour en haut