Back

Realitza l'actualització de Windows 10 a Windows 11

Apreneu a comprovar l'elegibilitat d'un dispositiu amb Windows 10 per a una actualització a Windows 11 i a automatitzar el procés d'actualització mitjançant polítiques de FleetDM i scripts de PowerShell, com ara la classificació de dispositius, l'avaluació d'elegibilitat i l'activació de la instal·lació de l'actualització.

Aquest article detalla el procés per comprovar quins dispositius amb Windows 10 són aptes per a una actualització a Windows 11 i iniciar automàticament aquesta actualització mitjançant polítiques de FleetDM i scripts de PowerShell .

El procediment inclou:

  • Detecció i emmagatzematge dels components del sistema necessaris (TPM 2.0 i Secure Boot) al registre
  • Validació dels requisits de maquinari i programari per determinar l'elegibilitat de l'actualització
  • Executar una descàrrega automàtica i una instal·lació silenciosa de Windows 11 en dispositius compatibles

 

Classificar dispositius amb TPM i Secure Boot presents

Crear la política de detecció (registre FleetDM)

Feu servir la consulta següent per verificar la presència de claus de registre que emmagatzemaran l'estat del TPM i de l'arrencada segura :

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'    );

Executa l'script associat (omple el registre)

Adjunta aquest script de PowerShell a la política anterior. Detecta la versió de TPM i l'estat de l'arrencada segura i, a continuació, els escriu al registre de Windows per a FleetDM.

$TPM = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm$SecureBoot = Confirm-SecureBootUEFI$TPMVersion = $TPM.SpecVersion$SecureBootEnabled = if ($SecureBoot) { 1 } else { 0 }# Write values to the registry (example)New-Item -Path "HKLM:\Software\FleetDM" -Force | Out-NullSet-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "TPMVersion" -Value $TPMVersionSet-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "SecureBoot" -Value $SecureBootEnabled

Resultat esperat: S'han creat/actualitzat HKLM\Software\FleetDM\TPMVersion i HKLM\Software\FleetDM\SecureBoot.


 

Avaluar l'elegibilitat d'un dispositiu amb Windows 10 per a Windows 11

Crea la política següent per validar els requisits mínims (RAM, nuclis de CPU, arquitectura, TPM 2.0, arrencada segura) i excloure els dispositius no compatibles.

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'    );

Interpretació: la consulta retorna 1 si el dispositiu no és compatible amb Windows 10. Feu-ho servir com a política de no conformitat per mantenir només els dispositius elegibles (aquells per als quals la consulta no retorna 1).


 

Activa l'actualització al Windows 11 (dispositius elegibles)

Adjunta l'script de desplegament següent als dispositius compatibles. Descarrega l'ISO de Windows 11, munta la imatge, copia els codis font localment i programa una configuració silenciosa a SYSTEM .

# ImportsImport-Module BitsTransfer# Variables$uri = "https://production-bucket-public-files.s3.eu-west-3.amazonaws.com/Win11_24H2_French_x64.iso"$destination = "C:\Win11.iso"$log = "C:\logs\download_win11_iso.log"# Create the logs folder if it doesn't existif (-not (Test-Path -Path "C:\logs")) {    New-Item -Path "C:\logs" -ItemType Directory | Out-Null}# Start the downloadtry {    "`n[$(Get-Date)] Starting download..." | Out-File -Append $log    if (-not (Test-Path $destination)){      Start-BitsTransfer -Source $uri -Destination $destination    }    "`n[$(Get-Date)] Download completed successfully." | Out-File -Append $log} catch {    "`n[$(Get-Date)] Error during download: $_" | Out-File -Append $log}# Additional variables$isoPath = "C:\Win11.iso"$setupFolder = "C:\Temp\Win11Files"$taskName = "Win11SilentUpgrade"# Step 1 - Mount the ISOMount-DiskImage -ImagePath $isoPath -PassThru | Out-NullStart-Sleep -Seconds 2$vol = Get-Volume -DiskImage (Get-DiskImage -ImagePath $isoPath)$driveLetter = $vol.DriveLetter# Step 2 - Copy ISO content locallyNew-Item -ItemType Directory -Force -Path $setupFolder | Out-NullCopy-Item "$driveLetter`:\*" -Destination $setupFolder -Recurse# Unmount the ISODismount-DiskImage -ImagePath $isoPath# Step 3 - Create and schedule the installation task$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# Step 4 - Start the task immediatelyStart-ScheduledTask -TaskName $taskName

Was this article helpful?

Give feedback about this article

Can’t find what you’re looking for?

Our customer care team is here for you.

Contact us

Knowledge Base Software powered by Helpjuice