Este guia encontra os dispositivos Windows 10 que podem ser atualizados para Windows 11 e, em seguida, inicia a atualização automaticamente neles. Ele se baseia em políticas de Frota e scripts do PowerShell.
Funcionalidade
Visão Geral
O processo tem três etapas:
- Leia o status do TPM 2.0 e do Secure Boot de cada dispositivo e salve-o no registro do Windows.
- Verifique os requisitos de hardware e software para decidir quais dispositivos se qualificam.
- Baixe o Windows 11 e instale-o silenciosamente nos dispositivos que se qualificam.
Como usar
Passo 1. Registrar TPM e Secure Boot no registro
- Crie uma política com a consulta abaixo. Ela verifica se as duas chaves de registro que contêm o TPM e o Secure Boot já existem.
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'
);- Anexe o script do PowerShell abaixo a essa política. Ele lê a versão do TPM e o status do Secure Boot e escreve ambos os valores no registro.
$TPM = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm
$SecureBoot = Confirm-SecureBootUEFI
$TPMVersion = $TPM.SpecVersion
$SecureBootEnabled = if ($SecureBoot) { 1 } else { 0 }
# Escreva valores no registro (exemplo)
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 $SecureBootEnabledQuando o script for executado, HKLM\Software\FleetDM\TPMVersion e HKLM\Software\FleetDM\SecureBoot existirão e conterão os valores atuais.
Passo 2. Verifique quais dispositivos Windows 10 se qualificam
- Crie uma segunda política com a consulta abaixo. Ela verifica RAM, núcleos de CPU, arquitetura, 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'
);- Leia o resultado da maneira certa: a consulta retorna 1 quando o dispositivo não é uma máquina Windows 10 elegível. Trate-o como uma política de não conformidade. Os dispositivos onde não retorna 1 são os que você pode atualizar.
Passo 3. Inicie a atualização em dispositivos elegíveis
- Anexe o script abaixo aos dispositivos que passaram no passo 2.
- O script baixa o ISO do Windows 11, monta-o, copia os arquivos de instalação para o disco local e agenda uma instalação silenciosa que é executada como SYSTEM.
# Importações
Import-Module BitsTransfer
# Variáveis
$uri = "https://production-bucket-public-files.s3.eu-west-3.amazonaws.com/Win11_24H2_French_x64.iso" # locale francês — substitua pela ISO de idioma e região adequadas
$destination = "C:\Win11.iso"
$log = "C:\logs\download_win11_iso.log"
# Crie a pasta de logs se não existe
if (-not (Test-Path -Path "C:\logs")) {
New-Item -Path "C:\logs" -ItemType Directory | Out-Null
}
# Inicie o download
try {
"`n[$(Get-Date)] Iniciando download..." | Out-File -Append $log
if (-not (Test-Path $destination)){
Start-BitsTransfer -Source $uri -Destination $destination
}
"`n[$(Get-Date)] Download concluído com sucesso." | Out-File -Append $log
} catch {
"`n[$(Get-Date)] Erro duração download: $_" | Out-File -Append $log
}
# Variáveis adicionais
$isoPath = "C:\Win11.iso"
$setupFolder = "C:\Temp\Win11Files"
$taskName = "Win11SilentUpgrade"
# Passo 1 - Monte o 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 - Copie o conteúdo do ISO localmente
New-Item -ItemType Directory -Force -Path $setupFolder | Out-Null
Copy-Item "$driveLetter`:\*" -Destination $setupFolder -Recurse
# Desmonte o ISO
Dismount-DiskImage -ImagePath $isoPath
# Passo 3 - Crie e agende a tarefa de instalação $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 - Inicie a tarefa imediatamente
Start-ScheduledTask -TaskName $taskNameDicas e Melhores Práticas
- Altere o ISO antes de executar qualquer coisa. O script aponta para um ISO francês. Substitua a URL pela ISO do seu idioma e região.
- Execute o passo 1 primeiro e dê tempo. O passo 2 depende dos valores do registro escritos no passo 1. Um dispositivo sem eles sempre aparece como não elegível.
- Comece com um pequeno grupo. A instalação é executada silenciosamente e sem um prompt de reinicialização. Experimente em alguns dispositivos antes de toda a frota.
-
Mantenha os logs. O log de download vai para
C:\logs\download_win11_iso.loge o log de instalação paraC:\logs\WinSetup.log. Verifique-os primeiro quando algo falhar. - Planeje para o download. Cada dispositivo baixa um ISO completo do Windows 11, então evite conexões lentas ou pagas por uso.
Solução de Problemas e FAQ
Solução de Problemas
- Um dispositivo que você esperava que se qualificasse aparece como não elegível. Verifique se o script do passo 1 foi executado nele e se ambas as chaves de registro existem. Em seguida, verifique os requisitos na consulta do passo 2: Windows 10, pelo menos 4 GB de RAM, pelo menos 2 núcleos físicos de CPU, um processador x86_64, versão do TPM 2 e Secure Boot ativado.
-
A atualização não começou. Abra
C:\logs\download_win11_iso.logpara ver se o ISO foi baixado. Se foi, procure a tarefa agendadaWin11SilentUpgradeno dispositivo. -
A instalação falhou parcialmente. Leia
C:\logs\WinSetup.log, onde o script informa a instalação do Windows para copiar seus logs.
FAQ
-
A consulta do passo 2 retorna os dispositivos elegíveis?
Não, o oposto. Ela retorna 1 para dispositivos que não se qualificam. Os dispositivos elegíveis são aqueles onde não retorna 1.
-
Por que salvar TPM e Secure Boot no registro?
Para que a política de elegibilidade possa lê-los com uma consulta de registro simples.
-
Qual conta executa a atualização?
SYSTEM, através de uma tarefa agendada que o script cria e inicia imediatamente.
-
O script reinicia o dispositivo?
O comando de instalação inclui/noreboot, então o script não força uma reinicialização por si só.