Aquest guia troba els dispositius de Windows 10 que poden passar a Windows 11 i després comença l'actualització de manera automàtica. Es basa en les polítiques de Fleet i scripts de PowerShell.
Funció/Funcionalitat
Visió general
El procés té tres etapes:
- Llegeix l'estat de TPM 2.0 i Secure Boot de cada dispositiu i el desa al registre de Windows.
- Comprova els requisits de maquinari i programari per decidir quins dispositius són elegibles.
- Descarrega Windows 11 i l'instal·la silenciosament als dispositius que són elegibles.
Com fer servir
Pas 1. Registrar TPM i Secure Boot al registre
- Crea una política amb la consulta a continuació. Comprova si les dues claus del registre que contenen l'estat de TPM i Secure Boot ja existeixen.
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'
);- Adjunta l'script de PowerShell a continuació a aquesta política. Llegeix la versió de TPM i l'estat de Secure Boot i escriu ambdós valors al registre.
$TPM = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm
$SecureBoot = Confirm-SecureBootUEFI
$TPMVersion = $TPM.SpecVersion
$SecureBootEnabled = if ($SecureBoot) { 1 } else { 0 }
# Escriu valors al registre (exemple)
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 $SecureBootEnabledQuan s'hagi executat l'script, HKLM\Software\FleetDM\TPMVersion i HKLM\Software\FleetDM\SecureBoot existiran i contindran els valors actuals.
Pas 2. Comprovar quins dispositius de Windows 10 són elegibles
- Crea una segona política amb la consulta a continuació. Comprova la RAM, nuclis de CPU, arquitectura, TPM 2.0 i 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'
);- Llegeix el resultat de la manera correcta: la consulta retorna 1 quan el dispositiu no és una màquina de Windows 10 elegible. Tracta-ho com una política de no conformitat. Els dispositius on no retorna 1 són els que pots actualitzar.
Pas 3. Començar l'actualització als dispositius elegibles
- Adjunta l'script a continuació als dispositius que han passat el pas 2.
- L'script descarrega l'ISO de Windows 11, la munta, copia els fitxers d'instal·lació al disc local i programa una configuració silenciosa que s'executa com a SYSTEM.
# Imports
Import-Module BitsTransfer
# Variables
$uri = "https://production-bucket-public-files.s3.eu-west-3.amazonaws.com/Win11_24H2_French_x64.iso" # locale francès — substitueix per l'ISO del llenguatge i regió
$destination = "C:\Win11.iso"
$log = "C:\logs\download_win11_iso.log"
# Crea la carpeta logs si no existeix
if (-not (Test-Path -Path "C:\logs")) {
New-Item -Path "C:\logs" -ItemType Directory | Out-Null
}
# Comença la descàrrega
try {
"`n[$(Get-Date)] Iniciant la descàrrega..." | Out-File -Append $log
if (-not (Test-Path $destination)){
Start-BitsTransfer -Source $uri -Destination $destination
}
"`n[$(Get-Date)] Descàrrega completada correctament." | Out-File -Append $log
} catch {
"`n[$(Get-Date)] Error durant la descàrrega: $_" | Out-File -Append $log
}
# Variables addicionals
$isoPath = "C:\Win11.iso"
$setupFolder = "C:\Temp\Win11Files"
$taskName = "Win11SilentUpgrade"
# Pas 1 - Muntem l'ISO
Mount-DiskImage -ImagePath $isoPath -PassThru | Out-Null
Start-Sleep -Seconds 2
$vol = Get-Volume -DiskImage (Get-DiskImage -ImagePath $isoPath)
$driveLetter = $vol.DriveLetter
# Pas 2 - Copia el contingut de l'ISO localment
New-Item -ItemType Directory -Force -Path $setupFolder | Out-Null
Copy-Item "$driveLetter`:\*" -Destination $setupFolder -Recurse
# Desmuntem l'ISO
Dismount-DiskImage -ImagePath $isoPath
# Pas 3 - Crea i programa la tasca d'instal·lació
$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
# Pas 4 - Comença la tasca immediatament
Start-ScheduledTask -TaskName $taskNameConsells i Millors Pràctiques
- Canvia l'ISO abans de executar qualsevol cosa. L'script apunta a un ISO francès. Substitueix l'URL per l'ISO de la teva llengua i regió.
- Executa primer el pas 1 i dóna-li temps. El pas 2 depèn dels valors del registre escrits al pas 1. Un dispositiu sense ells sempre apareix com no elegible.
- Comença amb un petit grup. La configuració s'executa silenciosament i sense un avís de reinici. Prova-ho en uns quants dispositius abans de tota la flota.
-
Mantén els logs. El registre de descàrrega va a
C:\logs\download_win11_iso.logi el registre de configuració aC:\logs\WinSetup.log. Comprova'ls primer quan alguna cosa falla. - Planifica la descàrrega. Cada dispositiu descarrega un ISO complet de Windows 11, així que evita connexions lentes o de pagament per ús.
Resolució de Problemes i FAQ
Resolució de Problemes
- Un dispositiu que esperaves que fos elegible apareix com no elegible. Comprova que l'script del pas 1 s'ha executat en ell i que ambdues claus del registre existeixen. Després comprova els requisits a la consulta del pas 2: Windows 10, almenys 4 GB de RAM, almenys 2 nuclis físics de CPU, un processador x86_64, versió de TPM 2 i Secure Boot activat.
-
L'actualització no va començar. Obre
C:\logs\download_win11_iso.logper veure si l'ISO s'ha descarregat. Si ho ha fet, busca la tasca programadaWin11SilentUpgradeal dispositiu. -
La configuració va fallar a mitges. Llegeix
C:\logs\WinSetup.log, on l'script indica a la configuració de Windows que copiï els seus registres.
FAQ
-
Retorna la consulta del pas 2 els dispositius elegibles?
No, al contrari. Retorna 1 per als dispositius que no són elegibles. Els dispositius elegibles són aquells on no retorna 1.
-
Per què desar TPM i Secure Boot al registre?
Perquè la política d'elegibilitat els pugui llegir amb una consulta de registre simple.
-
Quin compte executa l'actualització?
SYSTEM, a través d'una tasca programada que l'script crea i inicia immediatament.
-
L'script reinicia el dispositiu?
La comanda de configuració inclou/noreboot, així que l'script no força un reinici per si mateix.