Windows 11 Upgrade

It would be nice to be able to use ImmyBot to assist clients that wish to upgrade to Windows 11. We also occasionally get requests to wipe computers for donation, so a clean function would also be beneficial. I’m aware a reset can be done using the ppkg installer, but it configures a profile and adds an agent after. I would like a complete reset that takes it to OOBE. I have both ideas in the scope of one feature request because I imagine they would both utilize setup.exe arguments.

We should probably split this into 2 requests: Windows 11 Upgrade and Remote Wipe.

The Windows 11 Upgrade will likely be done initially by changing Windows 10x64 to Windows Upgrade and merging it with Windows 10 x86 which will require us to update Windows 10 x86 deployments in each instance to the new merged functionality. With the advent of dynamic versions we can switch the ISO we download on the fly. In the past it required each one to be uploaded manually.

I want to wait until we release Dynamic Parameters as this will allow us to more granularly control Windows 10/11 and the feature updates themselves. The core idea of that feature is to allow parameters to be defined in the param and dynamic parameter sections of the scripts, which means that we can have all the robust validation and conditions PowerShell has built in.

We would use this to, for example, reach out to an API to determine the available Windows Release IDs (21H1, 22H2, etc) so we don’t have to manually add them.

This is currently in active development and we hope to have released in the coming weeks.

I broke out Remote Wipe into its own request

1 Like

Just wondering if there is an ETA on when we can expect dynamic parameters and ultimately Windows 11 Upgrade?

I understand the desire to hold off for better implementation. However, currently, the hardware that is available to us is being delivered with Windows 10 Downgrade still. This means we either use MDT for bare-metal and hand it off to ImmyBot in a rather clunky manner, or we use ImmyBot from the start and follow up with Windows 11 Installation Assistant. Unfortunately, Windows 11 Installation Assistant adds roughly another hour to every deployment.

@DarrenDK would have to speak to this, but it is actively being worked on–awesome and powerful.

1 Like

One thing i’ve noticed for Windows 11 is that even when the reboot is complete, and the ImmyBot Verify script runs, it’s still not actually complete. Windows is still finalising the install and may actually roll back - I’ve seen ImmyBot run, verify that the computer is running 10.0.22xxx, but then fail.

Even worse, ImmyBot may then try and install other software and do a reboot which breaks stuff horribly.

I’ve added the following to the end of my Windows 11 x64 script (which is just a copy and paste of the Windows 10 x64 script with the appropriate adjustments)

if ($RebootPreference -ne "Suppress") {
    Write-Host "Waiting for setup to complete"
    While ((Invoke-ImmyCommand { Get-Process -Name 'setupplatform' -ErrorAction SilentlyContinue }).Count -ne 0) {
        Start-Sleep -Seconds 10
    Write-Host "Setup is complete"

I also allow the script to be run without a reboot (hence the $RebootPreference check), which I’m using right now to update computers in the office. The update happens while the computer is in use, and then completes when the user reboots at a time convenient to them. ImmyBot obviously validates the install as having failed - ideally i’d build in detection for a successful-but-not-yet-completed install to work around this.

Also Microsoft have defeated the fido code that ImmyBot borrows to do dynamic version detection and ISO download :frowning: