Se aplica a
Windows 10 Windows 10, version 1607, all editions Win 10 Ent LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 IoT Core LTSC Windows 10 Enterprise LTSC 2021 Windows 10 IoT Enterprise LTSC 2021 Windows 10, version 22H2, all editions Windows 11 Home and Pro, version 21H2 Windows 11 Enterprise Multi-Session, version 21H2 Windows 11 Enterprise and Education, version 21H2 Windows 11 IoT Enterprise, version 21H2 Windows 11 Home and Pro, version 22H2 Windows 11 Enterprise Multi-Session, version 22H2 Windows 11 Enterprise and Education, version 22H2 Windows 11 IoT Enterprise, version 22H2 Windows 11 SE, version 23H2 Windows 11 Home and Pro, version 23H2 Windows 11 Enterprise and Education, version 23H2 Windows 11 Enterprise Multi-Session, version 23H2 Windows 11 SE, version 24H2 Windows 11 Enterprise and Education, version 24H2 Windows 11 Enterprise Multi-Session, version 24H2 Windows 11 Home and Pro, version 24H2 Windows 11 IoT Enterprise, version 24H2 Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server 2025

Fecha de publicación original: 17 de noviembre de 2025

KB ID: 5072718

Script de recopilación de datos de inventario de arranque seguro de ejemplo

Copie y pegue este script de ejemplo y modifíquelo según sea necesario para su entorno: el script de recopilación de datos de inventario de arranque seguro de ejemplo.

Sample_Secure_Boot_Inventory_Data_Collection_script

# 1. HostName # Versión PS: Todo | Administración: No | Requisitos del sistema: Ninguno prueba {     $hostname = $env:NOMBREEQUIPO     if ([string]::IsNullOrEmpty($hostname)) {         Write-Warning "No se pudo determinar el nombre de host"         $hostname = "Desconocido"     }     Write-Host "Nombre de host: $hostname" } captura {     Write-Warning "Error al recuperar el nombre de host: $_"     $hostname = "Error"     Write-Host "Nombre de host: $hostname" }

# 2. CollectionTime # Versión PS: Todo | Administración: No | Requisitos del sistema: Ninguno prueba {     $collectionTime = Get-Date     if ($null -eq $collectionTime) {         Write-Warning "No se pudo recuperar la fecha y hora actuales"         $collectionTime = "Desconocido"     }     Write-Host "Hora de recogida: $collectionTime" } captura {     Write-Warning "Error al recuperar la fecha y hora: $_"     $collectionTime = "Error"     Write-Host "Hora de recogida: $collectionTime" }

# Registry: Secure Boot Main Key (3 values)

# 3. SecureBootEnabled # Versión PS: 3.0+ | Administración: puede ser necesario | Requisitos del sistema: sistema compatible con UEFI/Arranque seguro prueba {     $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop     Write-Host "Arranque seguro habilitado: $secureBootEnabled" } captura {     Write-Warning "No se puede determinar el estado de arranque seguro a través del cmdlet: $_"     # Prueba la reserva del Registro     prueba {         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop         $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled         Write-Host "Arranque seguro habilitado: $secureBootEnabled"     } captura {         Write-Warning "No se puede determinar el estado de arranque seguro a través del Registro. Es posible que el sistema no admita UEFI/arranque seguro".         $secureBootEnabled = $null         Write-Host "Arranque seguro habilitado: no disponible"     } }

# 4. HighConfidenceOptOut # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop     $highConfidenceOptOut = $regValue.HighConfidenceOptOut     Write-Host "Rechazo de confianza alta: $highConfidenceOptOut" } captura {     Write-Warning "No se encuentra o no se puede acceder a la clave del Registro HighConfidenceOptOut"     $highConfidenceOptOut = $null     Write-Host "Rechazo de confianza alta: no disponible" }

# 5. AvailableUpdates # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop     $availableUpdates = $regValue.AvailableUpdates     if ($null -ne $availableUpdates) {         # Convertir a formato hexadecimal         $availableUpdatesHex = "0x{0:X}" -f $availableUpdates         Write-Host "Novedades disponible: $availableUpdatesHex"     } else {         Write-Host "Novedades disponible: no disponible"     } } captura {     Write-Warning "No se encuentra o no se puede acceder a la clave del registro AvailableUpdates"     $availableUpdates = $null     Write-Host "Novedades disponible: no disponible" }

# Registry: Servicing Key (3 values)

# 6. UEFICA2023Status # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Status -ErrorAction Stop     $uefica 2023Status = $regValue.UEFICA2023Status     Write-Host "Estado de UEFI CA 2023: $uefica 2023Status" } captura {     Write-Warning "No se encuentra o no se puede acceder a la clave del Registro UEFICA2023Status"     $uefica 2023Status = $null     Write-Host "Estado de UEFI CA 2023: no disponible" }

# 7. UEFICA2023Capable # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop     $uefica 2023Capable = $regValue.UEFICA2023Capable     Write-Host "UEFI CA 2023 capaz: $uefica 2023Capable" } captura {     Write-Warning "NO se encuentra o no se puede acceder a la clave del Registro UEFICA2023Capable"     $uefica 2023Capable = $null     Write-Host "UEFI CA 2023 compatible: no disponible" }

# 8. UEFICA2023Error # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop     $uefica 2023Error = $regValue.UEFICA2023Error     Write-Host "Error de UEFI CA 2023: $uefica 2023Error" } captura {     Write-Warning "Clave de registro UEFICA2023Error no encontrada o inaccesible"     $uefica 2023Error = $null     Write-Host "Error de UEFI CA 2023: no disponible" }

# Registry: Device Attributes (7 values)

# 9. OEMManufacturerName # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop     $oemManufacturerName = $regValue.OEMManufacturerName     if ([string]::IsNullOrEmpty($oemManufacturerName)) {         Write-Warning "OEMManufacturerName está vacío"         $oemManufacturerName = "Desconocido"     }     Write-Host "Nombre del fabricante OEM: $oemManufacturerName" } captura {     Write-Warning "No se encuentra o no se puede acceder a la clave del Registro OEMManufacturerName"     $oemManufacturerName = $null     Write-Host "Nombre del fabricante OEM: no disponible" }

# 10. OEMModelSystemFamily # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop     $oemModelSystemFamily = $regValue.OEMModelSystemFamily     if ([string]::IsNullOrEmpty($oemModelSystemFamily)) {         Write-Warning "OEMModelSystemFamily está vacío"         $oemModelSystemFamily = "Desconocido"     }     Write-Host "Familia de modelos OEM: $oemModelSystemFamily" } captura {     Write-Warning "NO se encuentra o no se puede acceder a la clave del registro OEMModelSystemFamily"     $oemModelSystemFamily = $null     Write-Host "Familia de modelos oem: no disponible" }

# 11. OEMModelNumber # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop     $oemModelNumber = $regValue.OEMModelNumber     if ([string]::IsNullOrEmpty($oemModelNumber)) {         Write-Warning "OEMModelNumber está vacío"         $oemModelNumber = "Desconocido"     }     Write-Host "Número de modelo oem: $oemModelNumber" } captura {     Write-Warning "NO se encuentra o no se puede acceder a la clave del registro OEMModelNumber"     $oemModelNumber = $null     Write-Host "Número de modelo OEM: no disponible" }

# 12. FirmwareVersion # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop     $firmwareVersion = $regValue.FirmwareVersion     if ([string]::IsNullOrEmpty($firmwareVersion)) {         Write-Warning "FirmwareVersion está vacío"         $firmwareVersion = "Desconocido"     }     Write-Host "Versión de firmware: $firmwareVersion" } captura {     Write-Warning "No se encuentra o no se puede acceder a la clave del Registro firmwareVersion"     $firmwareVersion = $null     Write-Host "Versión de firmware: no disponible" }

# 13. FirmwareReleaseDate # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop     $firmwareReleaseDate = $regValue.FirmwareReleaseDate     if ([string]::IsNullOrEmpty($firmwareReleaseDate)) {         Write-Warning "FirmwareReleaseDate está vacío"         $firmwareReleaseDate = "Desconocido"     }     Write-Host "Fecha de lanzamiento del firmware: $firmwareReleaseDate" } captura {     Write-Warning "No se encuentra o no se puede acceder a la clave del Registro FirmwareReleaseDate"     $firmwareReleaseDate = $null     Write-Host "Fecha de lanzamiento del firmware: no disponible" }

# 14. OSArchitecture # Versión PS: Todo | Administración: No | Requisitos del sistema: Ninguno prueba {     $osArchitecture = $env:PROCESSOR_ARCHITECTURE     if ([string]::IsNullOrEmpty($osArchitecture)) {         # Prueba la reserva del Registro         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop         $osArchitecture = $regValue.OSArchitecture     }     if ([string]::IsNullOrEmpty($osArchitecture)) {         Write-Warning "No se pudo determinar la OSArchitecture"         $osArchitecture = "Desconocido"     }     Write-Host "Arquitectura del SO: $osArchitecture" } captura {     Write-Warning "Error al recuperar OSArchitecture: $_"     $osArchitecture = "Desconocido"     Write-Host "Arquitectura del SO: $osArchitecture" }

# 15. CanAttemptUpdateAfter (FILETIME) # Versión PS: Todo | Administración: puede ser necesario | Requisitos del sistema: Ninguno prueba {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop     $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter     # Convertir FILETIME a DateTime si es un número válido     if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) {         prueba {             $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter)         } captura {             Write-Warning "No se pudo convertir CanAttemptUpdateAfter FILETIME a DateTime"         }     }     Write-Host "Puede intentar actualizar después de: $canAttemptUpdateAfter" } captura {     Write-Warning "CanAttemptUpdateAfter clave del registro no encontrada o inaccesible"     $canAttemptUpdateAfter = $null     Write-Host "Puede intentar actualizar después de: no disponible" }

# Event Logs: System Log (5 values)

# 16-20. Event Log queries # Versión PS: 3.0+ | Administración: puede ser necesario para el registro del sistema | Requisitos del sistema: Ninguno prueba {     $allEventIds = @(1801, 1808)     $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)

    if ($events.Count -eq 0) {         Write-Warning "No se encontraron eventos de arranque seguro (1801/1808) en el registro del sistema"         $latestEventId = $null         $bucketId = $null         $confidence = $null         $event 1801Count = 0         $event 1808Count = 0         Write-Host "Id. de evento más reciente: no disponible"         Write-Host "Id. del cubo: no disponible"         Write-Host "Confianza: No disponible"         Write-Host "Recuento de eventos 1801: 0"         Write-Host "Recuento de eventos 1808: 0"     } else {         # 16. LatestEventId         $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object - Primeros 1         if ($null -eq $latestEvent) {             Write-Warning "No se pudo determinar el evento más reciente"             $latestEventId = $null             Write-Host "Id. de evento más reciente: no disponible"         } else {             $latestEventId = $latestEvent.Id             Write-Host "Id. de evento más reciente: $latestEventId"         }

        # 17. BucketID - Extracted from Event 1801/1808 if ($null -ne $latestEvent -and $null -ne $latestEvent.Message) {             if ($latestEvent.Message -match 'BucketId:\s*(.+)') {                 $bucketId = $matches[1]. Trim()                 Write-Host "Id. del cubo: $bucketId"             } else {                 Write-Warning "BucketId no se encuentra en el mensaje de evento"                 $bucketId = $null                 Write-Host "Id. del cubo: no se encuentra en el evento"             }         } else {             Write-Warning "El último evento o mensaje es nulo, no se puede extraer BucketId"             $bucketId = $null             Write-Host "Id. del cubo: no disponible"         }

        # 18. Confidence - Extracted from Event 1801/1808 if ($null -ne $latestEvent -and $null -ne $latestEvent.Message) {             if ($latestEvent.Message -match 'BucketConfidenceLevel:\s*(.+)') {                 $confidence = $matches[1]. Trim()                 Write-Host "Confianza: $confidence"             } else {                 Write-Warning "Nivel de confianza no se encuentra en el mensaje de evento"                 $confidence = $null                 Write-Host "Confianza: No se encuentra en el evento"             }         } else {             Write-Warning "El último evento o mensaje es nulo, no se puede extraer la confianza"             $confidence = $null             Write-Host "Confidence: Not Available"         }

        # 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Id -eq 1801})         $event 1801Count = $event 1801Array.Count         Write-Host "Recuento de eventos 1801: $event 1801Count"

        # 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808})         $event 1808Count = $event 1808Array.Count         Write-Host "Recuento de eventos 1808: $event 1808Count"     } } captura {     Write-Warning "Error al recuperar registros de eventos. Puede requerir privilegios de administrador: $_"     $latestEventId = $null     $bucketId = $null     $confidence = $null     $event 1801Count = 0     $event 1808Count = 0     Write-Host "Id. de evento más reciente: error"     Write-Host "Bucket ID: Error"     Write-Host "Confianza: Error"     Write-Host "Recuento de eventos 1801: 0"     Write-Host "Recuento del evento 1808: 0" }

# WMI/CIM Queries (4 values)

# 21. OSVersion # Versión PS: 3.0+ (use Get-WmiObject para 2.0) | Administración: No | Requisitos del sistema: Ninguno prueba {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -o [string]::IsNullOrEmpty($osInfo.Version)) {         Write-Warning "No se pudo recuperar la versión del SO"         $osVersion = "Desconocido"     } else {         $osVersion = $osInfo.Version     }     Write-Host "Versión del SO: $osVersion" } captura {     Write-Warning "Error al recuperar la versión del sistema operativo: $_"     $osVersion = "Desconocido"     Write-Host "Versión del SO: $osVersion" }

# 22. LastBootTime # Versión PS: 3.0+ (use Get-WmiObject para 2.0) | Administración: No | Requisitos del sistema: Ninguno prueba {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -o $null -eq $osInfo.LastBootUpTime) {         Write-Warning "No se pudo recuperar el último tiempo de arranque"         $lastBootTime = $null         Write-Host "Hora del último arranque: no disponible"     } else {         $lastBootTime = $osInfo.LastBootUpTime         Write-Host "Hora del último arranque: $lastBootTime"     } } captura {     Write-Warning "Error al recuperar el último tiempo de arranque: $_"     $lastBootTime = $null     Write-Host "Hora del último arranque: no disponible" }

# 23. BaseBoardManufacturer # Versión PS: 3.0+ (use Get-WmiObject para 2.0) | Administración: No | Requisitos del sistema: Ninguno prueba {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) {         Write-Warning "No se pudo recuperar el fabricante de la base"         $baseBoardManufacturer = "Desconocido"     } else {         $baseBoardManufacturer = $baseBoard.Manufacturer     }     Write-Host "Fabricante de placa base: $baseBoardManufacturer" } captura {     Write-Warning "Error al recuperar el fabricante de la placa base: $_"     $baseBoardManufacturer = "Desconocido"     Write-Host "Fabricante de placa base: $baseBoardManufacturer" }

# 24. BaseBoardProduct # Versión PS: 3.0+ (use Get-WmiObject para 2.0) | Administración: No | Requisitos del sistema: Ninguno prueba {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -o [string]::IsNullOrEmpty($baseBoard.Product)) {         Write-Warning "No se pudo recuperar el producto de la base"         $baseBoardProduct = "Desconocido"     } else {         $baseBoardProduct = $baseBoard.Product     }     Write-Host "Producto de placa base: $baseBoardProduct" } captura {     Write-Warning "Error al recuperar el producto de placa base: $_"     $baseBoardProduct = "Desconocido"     Write-Host "Producto de placa base: $baseBoardProduct"}

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.