Volver

Actualiza de Windows 10 a Windows 11

Descubre los beneficios y el proceso paso a paso para actualizar de Windows 10 a Windows 11 y mejorar tu experiencia informática.

Esta guía encuentra los dispositivos de Windows 10 que pueden actualizarse a Windows 11 y luego inicia la actualización en ellos automáticamente. Se basa en políticas de Fleet y scripts de PowerShell.


 

Funcionalidad

Descripción general

El proceso tiene tres etapas:

  1. Leer el estado de TPM 2.0 y Secure Boot de cada dispositivo y guardarlo en el registro de Windows.
  2. Verificar los requisitos de hardware y software para decidir qué dispositivos califican.
  3. Descargar Windows 11 e instalarlo silenciosamente en los dispositivos que califican.

 

Cómo usar

Paso 1. Registrar TPM y Secure Boot en el registro

  1. Crear una política con la consulta a continuación. Verifica si las dos claves del registro que contienen el estado de TPM y Secure Boot ya existen.
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. Adjuntar el script de PowerShell a continuación a esa política. Lee la versión de TPM y el estado de Secure Boot y escribe ambos valores en el registro.
$TPM = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm
$SecureBoot = Confirm-SecureBootUEFI

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

# Escribir valores en el registro (ejemplo)
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

Cuando el script se haya ejecutado, HKLM\Software\FleetDM\TPMVersion y HKLM\Software\FleetDM\SecureBoot existirán y contendrán los valores actuales.

Paso 2. Verificar qué dispositivos de Windows 10 califican

  1. Crear una segunda política con la consulta a continuación. Verifica RAM, núcleos de CPU, arquitectura, TPM 2.0 y 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. Leer el resultado de la manera correcta: la consulta devuelve 1 cuando el dispositivo no es una máquina de Windows 10 elegible. Trátalo como una política de no cumplimiento. Los dispositivos donde no devuelve 1 son los que puedes actualizar.

Paso 3. Iniciar la actualización en dispositivos elegibles

  1. Adjuntar el script a continuación a los dispositivos que pasaron el paso 2.
  2. El script descarga el ISO de Windows 11, lo monta, copia los archivos de instalación al disco local y programa una instalación silenciosa que se ejecuta como SYSTEM.
# Importaciones
Import-Module BitsTransfer

# Variables
$uri = "https://production-bucket-public-files.s3.eu-west-3.amazonaws.com/Win11_24H2_French_x64.iso" # localidad francesa — reemplazar con la ISO apropiada para tu región
$destination = "C:\Win11.iso"
$log = "C:\logs\download_win11_iso.log"

# Crear la carpeta de logs si no existe
if (-not (Test-Path -Path "C:\logs")) {
    New-Item -Path "C:\logs" -ItemType Directory | Out-Null
}

# Iniciar la descarga
try {
    "`n[$(Get-Date)] Iniciando descarga..." | Out-File -Append $log
    if (-not (Test-Path $destination)){
      Start-BitsTransfer -Source $uri -Destination $destination
    }
    "`n[$(Get-Date)] La descarga se completó conéxito." | Out-File -Append $log
} catch {
    "`n[$(Get-Date)] Error durante la descarga: $_" | Out-File -Append $log
}

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

# Paso 1 - Montar el ISO
Mount-DiskImage -ImagePath $isoPath -PassThru | Out-Null
Start-Sleep -Seconds 2
$vol = Get-Volume -DiskImage (Get-DiskImage -ImagePath $isoPath)
$driveLetter = $vol.DriveLetter

# Paso 2 - Copiar contenido del ISO localmente
New-Item -ItemType Directory -Force -Path $setupFolder | Out-Null
Copy-Item "$driveLetter`:\*" -Destination $setupFolder -Recurse

# Desmontar el ISO
Dismount-DiskImage -ImagePath $isoPath

# Paso 3 - Crear y programar la tarea de instalación 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

# Paso 4 - Iniciar la tarea inmediatamente
Start-ScheduledTask -TaskName $taskName

Consejos y Mejores Prácticas

  • Cambia el ISO antes de ejecutar cualquier cosa. El script apunta a un ISO francés. Reemplaza la URL con la ISO para tu idioma y región.
  • Ejecuta primero el paso 1 y dale tiempo. El paso 2 depende de los valores del registro escritos en el paso 1. Un dispositivo sin ellos siempre mostrará como no elegible.
  • Comienza con un grupo pequeño. La instalación se ejecuta silenciosamente y sin un aviso de reinicio. Prueba en algunos dispositivos antes de hacerlo en toda la flota.
  • Mantén los registros. El registro de descarga va a C:\logs\download_win11_iso.log y el registro de instalación a C:\logs\WinSetup.log. Revísalos primero cuando algo falla.
  • Planifica la descarga. Cada dispositivo descarga un ISO completo de Windows 11, así que evita conexiones lentas o de pago por uso.

 

Solución de Problemas y FAQ

Solución de Problemas

  • Un dispositivo que esperabas que calificara aparece como no elegible. Verifica que el script del paso 1 se haya ejecutado en él y que ambas claves del registro existan. Luego verifica los requisitos en la consulta del paso 2: Windows 10, al menos 4 GB de RAM, al menos 2 núcleos físicos de CPU, un procesador x86_64, versión de TPM 2 y Secure Boot activado.
  • La actualización no se inició. Abre C:\logs\download_win11_iso.log para ver si se descargó el ISO. Si lo hizo, busca la tarea programada Win11SilentUpgrade en el dispositivo.
  • La instalación falló a medio camino. Lee C:\logs\WinSetup.log, donde el script indica a la instalación de Windows que copie sus registros.

 

FAQ

  1. ¿Devuelve la consulta del paso 2 los dispositivos elegibles?
    No, lo contrario. Devuelve 1 para los dispositivos que no califican. Los dispositivos elegibles son aquellos donde no devuelve 1.
     
  2. ¿Por qué guardar TPM y Secure Boot en el registro?
    Para que la política de elegibilidad pueda leerlos con una consulta de registro simple.
     
  3. ¿Qué cuenta ejecuta la actualización?
    SYSTEM, a través de una tarea programada que el script crea y comienza de inmediato.
     
  4. ¿Reinicia el dispositivo el script?
    El comando de instalación incluye /noreboot, por lo que el script no fuerza un reinicio por sí mismo.

¿Te ha sido útil este artículo?

Give feedback about this article

¿No encuentras lo que estás buscando?

Nuestro equipo de servicio al cliente está aquí para ti.

Contáctanos

Knowledge Base Software powered by Helpjuice