Voltar

Actualice 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.


 

Función/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 ya existen las dos claves de registro que contienen el estado de TPM y Secure Boot.
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 se haya ejecutado el script, 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 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 conformidad. 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 en el disco local y programa una instalación silenciosa que se ejecuta como SYSTEM.
# Imports
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 el ISO apropiado para tu región
$destination = "C:\Win11.iso"
$log = "C:\logs\download_win11_iso.log"

# Crear la carpeta 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)] Descarga completada 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 el 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 el ISO correspondiente a tu idioma y región.
  • Ejecuta el paso 1 primero y dale tiempo. El paso 2 depende de los valores del registro escritos en el paso 1. Un dispositivo sin ellos siempre se muestra 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 se guarda en C:\logs\download_win11_iso.log y el registro de instalación en 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.

 

Resolución de Problemas y FAQ

Resolució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 de 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 de CPU físicos, un procesador x86_64, versión de TPM 2 y Secure Boot activado.
  • La actualización no comenzó. 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 fue ú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