In unseren früheren Blogbeiträgen haben wir verschiedene Ansätze für die Migration auf Windows 11 untersucht: mit SCCM, über XOAP, über GPOs und Registrierungsschlüssel und Windows Update in den Einstellungen. In diesem Beitrag führen wir Sie durch eine weitere Methode - die Bereitstellung des Windows 11-Upgrade-Pakets mithilfe unseres PowerShell App Deployment Toolkit (hier kostenlos herunterladen).
Verwenden Sie PSADT, um von Windows 10 auf Windows 11 zu migrieren
Um loszulegen, Extrahieren Sie den Inhalt Ihrer Windows 11 ISO-Datei und sie in Ihr PSADT-Paket aufnehmen. Dann verwenden Sie die setup.exe Datei aus der extrahierten ISO-Datei zusammen mit bestimmten Befehlszeilenparametern, um ein Upgrade von Windows 10 auf Windows 11 durchzuführen.
Sobald Sie Ihre Quelldatei fertig haben, müssen Sie das Skript "Deploy-Application.ps1" ändern. Im Teil vor der Installation wird geprüft, ob eine geplante Aufgabe vorhanden ist und löschen Sie sie (im Falle von Fehlern/Reparaturen).
#### (Vorinstallation) Geplante Aufgabe löschen -------------------------------------------->
$DELTaskName = 'Win11Upgrade'
# Prüfen, ob die Aufgabe existiert
$DELTaskExists = Get-ScheduledTask -TaskName $DELTaskName -ErrorAction SilentlyContinue
if ($DELTaskExists) {
# Löschen der Aufgabe
Unregister-ScheduledTask -TaskName $DELTaskName -Confirm:$false
Write-Output "(Pre-Install) Aufgabe '$DELTaskName' wurde gelöscht."
} else {
Write-Output "(Vorinstallation) Aufgabe '$DELTaskName' existiert nicht. Wir fahren mit der Installation fort"
}
Im Installationsteil wird ein geplanter Task erstellt und gestartet. In einer While-Schleife wird geprüft, ob der Task nach dem Start noch läuft.
###># CREATE SCHEDULED TASK -------------------------------------------------------->
$STExecutable = "$dirfiles\ISO\Setup.exe"
$STArguments = "/Auto Upgrade /EULA akzeptieren /NoReboot"
$STTaskName = "Win11Upgrade"
$STTriggerTime = (Get-Date).AddSeconds(15)
$STPriorität = 4
$STTrigger = New-ScheduledTaskTrigger -Once -At $STTriggerTime
$STSettings = New-ScheduledTaskSettingsSet -StartWhenAvailable -Priority $STPriority -RunOnlyIfNetworkAvailable -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
# Erstellen einer neuen geplanten Aufgabenaktion
$STAction = New-ScheduledTaskAction -Execute $STExecutable -Argument $STArguments -WorkingDirectory (Split-Path $STExecutable)
# Erstellen einer neuen geplanten Aufgabe für das SYSTEM-Konto
$STPrincipal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
# Erstellen und Registrieren der neuen geplanten Aufgabe
$STTask = New-ScheduledTask -Action $STAction -Trigger $STTrigger -Settings $STSettings -Principal $STPrincipal
Register-ScheduledTask -Aufgabenname $STTaskName -InputObject $STTask
#### KICK OFF GEPLANTE AUFGABE ------------------------------------------------------>
Start-Schlummern 10
GeplanteAufgabe starten -Aufgabenname "Win11Upgrade"
##P16T# GEPLANTE AUFGABE ÜBERWACHEN ------------------------------------------------------->
$STTaskName = "Win11Upgrade"
# Schleife, bis die Aufgabe nicht mehr ausgeführt wird
while ((Get-ScheduledTask -TaskName $STTaskName).State -eq "Running")
{
# Abrufen von Aufgabeninformationen
$taskInfo = Get-ScheduledTaskInfo -TaskName $STTaskName
# Überprüfen, ob die Aufgabe von SYSTEM ausgeführt wird
if ((Get-ScheduledTask -TaskName $STTaskName).Principal.UserId -eq "SYSTEM")
{
# In den Ausgang schreiben
Write-Output "$STTaskName läuft noch als SYSTEM"
}
sonst
{
Write-Output "$STTaskName läuft noch, aber nicht als SYSTEM"
}
# Warten Sie 10 Sekunden lang, bevor Sie erneut prüfen
Start-Sleep -Seconds 10
}
Write-Output "$STTaskName has finished running"
Im Anschluss an die Installation wird die erstellte geplante Aufgabe gelöscht.
#### (Post-Install) Geplanten Task löschen -------------------------------------------->
$DELTaskName = "Win11Upgrade"
# Prüfen, ob die Aufgabe existiert
$DELTaskExists = Get-ScheduledTask -TaskName $DELTaskName -ErrorAction SilentlyContinue
if ($DELTaskExists) {
# Löschen der Aufgabe
Unregister-ScheduledTask -TaskName $DELTaskName -Confirm:$false
Write-Output "(Post-Install) Aufgabe '$DELTaskName' wurde gelöscht."
} else {
Write-Output "(Post-Install) Aufgabe '$DELTaskName' existiert nicht."
}
Es gibt eine Reihe von zu berücksichtigende Optionen wenn Sie dieses Paket erweitern möchten:
- Prüfung der Windows 11-Voraussetzungen hinzufügen
- Erweitern Sie es mit PSADT-Funktionen wie:
- Show-InstallationWillkommen
- Zeige-Installationsfortschritt
- Show-InstallationRestartPrompt - Passen Sie die verfügbaren Optionen für geplante Aufgaben an:
- RunOnlyIfNetworkAvailable
- AllowStartIfOnBatteries
- NichtAbschaltenAufBatterien - Fügen Sie der setup.exe-Ausführung weitere Parameter hinzu (z. B. "/Product Server" als Umgehung für die Prüfung der Voraussetzungen)
Sie sind startklar!
Das Upgrade auf Windows 11 mit PSADT ist eine flexible Option, wenn Sie mehr Kontrolle über den Prozess haben möchten. Mit ein paar Skriptanpassungen können Sie das Upgrade von Anfang bis Ende durchführen.