Quando si gestisce un'infrastruttura IT, affidarsi a tool grafici "consumer" come l'app Controllo integrità PC di Microsoft per verificare la compatibilità a Windows 11 non è scalabile. Come sistemisti, abbiamo bisogno di strumenti automatizzabili, rapidi e che forniscano output testuali chiari da poter integrare in script di deploy più ampi.
I due requisiti più critici (e spesso bloccanti) per l'upgrade da Windows 10 a Windows 11 riguardano la sicurezza hardware: la presenza del TPM 2.0 (Trusted Platform Module) e l'abilitazione del Secure Boot a livello UEFI.
Ho scritto un rapido script in PowerShell che interroga direttamente il sistema operativo per estrarre queste informazioni senza dover riavviare la macchina o entrare nel BIOS/UEFI.
<#
.SYNOPSIS
Verifica la prontezza del sistema per l'upgrade a Windows 11 (Focus su TPM e Secure Boot).
.DESCRIPTION
Lo script controlla se il modulo TPM è presente, pronto e in versione 2.0.
Verifica inoltre se il Secure Boot è abilitato nel firmware UEFI.
#>
Write-Host "=========================================" -ForegroundColor Cyan
Write-Host " Verifica Requisiti Windows 11 " -ForegroundColor Cyan
Write-Host "=========================================`n" -ForegroundColor Cyan
# 1. Verifica TPM
Write-Host "[*] Controllo modulo TPM..."
try {
$tpm = Get-Tpm
if ($tpm.TpmPresent) {
# La proprietà TpmReady indica se è pronto all'uso
if ($tpm.TpmReady) {
Write-Host " [OK] TPM rilevato e pronto all'uso." -ForegroundColor Green
} else {
Write-Host " [WARNING] TPM presente ma non inizializzato." -ForegroundColor Yellow
}
} else {
Write-Host " [ERRORE] Nessun modulo TPM rilevato sulla scheda madre." -ForegroundColor Red
}
} catch {
Write-Host " [ERRORE] Impossibile interrogare il TPM. Assicurati di eseguire come Amministratore." -ForegroundColor Red
}
# 2. Verifica Secure Boot
Write-Host "`n[*] Controllo Secure Boot..."
try {
$secureBoot = Confirm-SecureBootUEFI
if ($secureBoot) {
Write-Host " [OK] Secure Boot abilitato nel firmware UEFI." -ForegroundColor Green
} else {
Write-Host " [ERRORE] Secure Boot disabilitato. È necessario attivarlo nel BIOS/UEFI." -ForegroundColor Red
}
} catch {
Write-Host " [ERRORE] Cmdlet non supportata o sistema in modalità BIOS Legacy (non UEFI)." -ForegroundColor Red
}
Write-Host "`n=========================================" -ForegroundColor Cyan
Write-Host "Controllo terminato." -ForegroundColor Cyan
Come funziona sotto il cofano?
Get-Tpm: È una cmdlet nativa di Windows che restituisce un oggetto contenente i dettagli del Trusted Platform Module. Verifichiamo TpmPresent e TpmReady per assicurarci non solo che il chip esista, ma che sia stato attivato correttamente a livello di sistema operativo.
Confirm-SecureBootUEFI: Questa cmdlet interroga direttamente le variabili firmware. Se restituisce True, il Secure Boot è attivo. Se lo script finisce nel blocco catch, è altamente probabile che il disco di sistema sia partizionato in MBR e avvii in modalità Legacy BIOS (che impedisce l'installazione di Windows 11).
Conclusioni e Sviluppi Futuri
Questo script è un ottimo punto di partenza per una baseline di sicurezza. In ambienti Enterprise, questi controlli possono essere integrati in un modulo PowerShell più grande, magari eseguito tramite GPO o RMM, per generare un report CSV di tutte le macchine del parco aziendale pronte (o meno) per il rollout del nuovo OS.
Trovate questo e altri script di automazione sul mio GitHub.