Voltar

Realize a atualização do Windows 10 para o Windows 11.

Aprenda como verificar a elegibilidade de dispositivos Windows 10 para uma atualização para o Windows 11 e automatize o processo de atualização usando políticas do FleetDM e scripts do PowerShell, incluindo classificação de dispositivos, avaliação de elegibilidade e acionamento da instalação da atualização.

Este artigo detalha o processo para verificar quais dispositivos Windows 10 são elegíveis para uma atualização para o Windows 11 e iniciar automaticamente essa atualização usando políticas do FleetDM e scripts do PowerShell .

O procedimento inclui:

  • Detectar e armazenar os componentes de sistema necessários (TPM 2.0 e Inicialização Segura) no registro.
  • Validar os requisitos de hardware e software para determinar a elegibilidade para atualização.
  • Executar o download automatizado e a instalação silenciosa do Windows 11 em dispositivos compatíveis.

 

Classifique os dispositivos com TPM e Inicialização Segura ativados.

Criar a política de detecção (registo FleetDM)

Utilize a seguinte consulta para verificar a presença de chaves de registro que armazenam o status do TPM e da Inicialização 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'    );

Execute o script associado (preencha o registro).

Anexe este script do PowerShell à política acima. Ele detecta a versão do TPM e o status da Inicialização Segura e, em seguida, os grava no registro do Windows para o 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

Resultado esperado: As pastas HKLM\Software\FleetDM\TPMVersion e HKLM\Software\FleetDM\SecureBoot são criadas/atualizadas.


 

Avalie a elegibilidade de um dispositivo Windows 10 para o Windows 11.

Crie a seguinte política para validar os requisitos mínimos (RAM, núcleos de CPU, arquitetura, TPM 2.0, Inicialização Segura) e excluir dispositivos não compatíveis.

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

Interpretação: a consulta retorna 1 se o dispositivo não for compatível com o Windows 10. Use-a como uma política de não conformidade para manter apenas os dispositivos elegíveis (aqueles para os quais a consulta não retorna 1).


 

Acione a atualização para o Windows 11 (dispositivos elegíveis)

Anexe o script de implantação abaixo aos dispositivos compatíveis. Ele baixa a ISO do Windows 11, monta a imagem, copia as fontes localmente e agenda uma instalação silenciosa no sistema .

# 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

Este artigo foi útil?

Give feedback about this article

Não consegue encontrar o que procura?

A nossa equipa de apoio ao cliente está aqui para si.

Contacte-nos

Knowledge Base Software powered by Helpjuice