Indietro

Aggiorna da Windows 10 a Windows 11

Scopri i vantaggi e il processo passo-passo per aggiornare da Windows 10 a Windows 11 per migliorare la tua esperienza informatica.

Questa guida trova i dispositivi Windows 10 che possono passare a Windows 11 e poi avvia automaticamente l'aggiornamento su di essi. Si basa su politiche di Fleet e script PowerShell.


 

Funzionalità

Panoramica

Il processo ha tre fasi:

  1. Leggere lo stato di TPM 2.0 e Secure Boot di ciascun dispositivo e salvarlo nel registro di Windows.
  2. Controllare i requisiti hardware e software per decidere quali dispositivi sono idonei.
  3. Scaricare Windows 11 e installarlo silenziosamente sui dispositivi che sono idonei.

 

Come utilizzare

Passo 1. Registrare TPM e Secure Boot nel registro

  1. Creare una politica con la query sottostante. Controlla se le due chiavi di registro che contengono lo stato di TPM e Secure Boot esistono già.
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'
    );
  1. Allega lo script PowerShell sottostante a quella politica. Legge la versione TPM e lo stato di Secure Boot e scrive entrambi i valori nel registro.
$TPM = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm
$SecureBoot = Confirm-SecureBootUEFI

$TPMVersion = $TPM.SpecVersion
$SecureBootEnabled = if ($SecureBoot) { 1 } else { 0 }

# Scrivere valori nel registro (esempio)
New-Item -Path "HKLM:\Software\FleetDM" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "TPMVersion" -Value $TPMVersion
Set-ItemProperty -Path "HKLM:\Software\FleetDM" -Name "SecureBoot" -Value $SecureBootEnabled

Quando lo script è stato eseguito, HKLM\Software\FleetDM\TPMVersion e HKLM\Software\FleetDM\SecureBoot esistono e contengono i valori attuali.

Passo 2. Controllare quali dispositivi Windows 10 sono idonei

  1. Creare una seconda politica con la query sottostante. Controlla RAM, core CPU, architettura, TPM 2.0 e Secure Boot.
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'
    );
  1. Leggi il risultato nel modo corretto: la query restituisce 1 quando il dispositivo non è una macchina Windows 10 idonea. Trattalo come una politica di non conformità. I dispositivi per i quali non restituisce 1 sono quelli che puoi aggiornare.

Passo 3. Avviare l'aggiornamento sui dispositivi idonei

  1. Allega lo script sottostante ai dispositivi che hanno superato il passo 2.
  2. Lo script scarica l'ISO di Windows 11, la monta, copia i file di installazione nel disco locale e pianifica un'installazione silenziosa che viene eseguita come SYSTEM.
# Importa
Import-Module BitsTransfer

# Variabili
$uri = "https://production-bucket-public-files.s3.eu-west-3.amazonaws.com/Win11_24H2_French_x64.iso" # Locale francese — sostituisci con l'ISO appropriato per la tua regione
$destination = "C:\Win11.iso"
$log = "C:\logs\download_win11_iso.log"

# Crea la cartella logs se non esiste
if (-not (Test-Path -Path "C:\logs")) {
    New-Item -Path "C:\logs" -ItemType Directory | Out-Null
}

# Avvia il download
try {
    "`n[$(Get-Date)] Avvio download..." | Out-File -Append $log
    if (-not (Test-Path $destination)){
      Start-BitsTransfer -Source $uri -Destination $destination
    }
    "`n[$(Get-Date)] Download completato consuccesso." | Out-File -Append $log
} catch {
    "`n[$(Get-Date)] Errore durante il download: $_" | Out-File -Append $log
}

# Variabili aggiuntive
$isoPath = "C:\Win11.iso"
$setupFolder = "C:\Temp\Win11Files"
$taskName = "Win11SilentUpgrade"

# Passo 1 - Montare l'ISO
Mount-DiskImage -ImagePath $isoPath -PassThru | Out-Null
Start-Sleep -Seconds 2
$vol = Get-Volume -DiskImage (Get-DiskImage -ImagePath $isoPath)
$driveLetter = $vol.DriveLetter

# Passo 2 - Copiare il contenuto dell'ISO localmente
New-Item -ItemType Directory -Force -Path $setupFolder | Out-Null
Copy-Item "$driveLetter`:\*" -Destination $setupFolder -Recurse

# Smontare l'ISO
Dismount-DiskImage -ImagePath $isoPath

# Passo 3 - Creare e pianificare il compito di installazione 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

# Passo 4 - Avviare il compito immediatamente
Start-ScheduledTask -TaskName $taskName

Consigli e Migliori Pratiche

  • Cambia l'ISO prima di eseguire qualsiasi cosa. Lo script punta a un ISO francese. Sostituisci l'URL con l'ISO per la tua lingua e regione.
  • Esegui prima il passo 1 e dagli tempo. Il passo 2 dipende dai valori di registro scritti nel passo 1. Un dispositivo senza di essi mostra sempre come non idoneo.
  • Inizia con un piccolo gruppo. L'installazione avviene silenziosamente e senza un messaggio di riavvio. Provalo su alcuni dispositivi prima di tutta la flotta.
  • Conserva i log. Il log di download va a C:\logs\download_win11_iso.log e il log di installazione a C:\logs\WinSetup.log. Controllali prima quando qualcosa fallisce.
  • Pianifica per il download. Ogni dispositivo scarica un ISO completo di Windows 11, quindi evita connessioni lente o a pagamento.

 

Risoluzione dei problemi e FAQ

Risoluzione dei problemi

  • Un dispositivo che ti aspettavi idoneo risulta non idoneo. Controlla che lo script del passo 1 sia stato eseguito su di esso e che entrambe le chiavi di registro esistano. Controlla poi i requisiti nella query del passo 2: Windows 10, almeno 4 GB di RAM, almeno 2 core CPU fisici, un processore x86_64, versione TPM 2 e Secure Boot attivato.
  • L'aggiornamento non è partito. Apri C:\logs\download_win11_iso.log per vedere se l'ISO è stato scaricato. Se lo è stato, cerca il compito pianificato Win11SilentUpgrade sul dispositivo.
  • L'installazione è fallita a metà. Leggi C:\logs\WinSetup.log, dove lo script dice a Windows di copiare i suoi log.

 

FAQ

  1. La query del passo 2 restituisce i dispositivi idonei?
    No, il contrario. Restituisce 1 per i dispositivi che non sono idonei. I dispositivi idonei sono quelli per i quali non restituisce 1.
     
  2. Perché salvare TPM e Secure Boot nel registro?
    Affinché la politica di idoneità possa leggerli con una semplice query di registro.
     
  3. Quale account esegue l'aggiornamento?
    SYSTEM, tramite un compito pianificato che lo script crea e avvia immediatamente.
     
  4. Lo script riavvia il dispositivo?
    Il comando di installazione include /noreboot, quindi lo script non forza un riavvio da solo.

Questo articolo è stato utile?

Give feedback about this article

Non trovi quello che stai cercando?

Il nostro team di assistenza clienti è qui per te.

Contattaci

Knowledge Base Software powered by Helpjuice