Aplica-se a
Windows 10 Windows 10, version 1607, all editions Windows 10 Enterprise 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

Data de publicação original: 17 de novembro de 2025

ID do KB: 5072718

Script de coleta de dados de inventário de inicialização segura de exemplo

Copie e cole este script de exemplo e modifique conforme necessário para seu ambiente: o script de Coleta de Dados de Inventário de Inicialização Segura de Exemplo.

Sample_Secure_Boot_Inventory_Data_Collection_script

# 1. HostName Versão # PS: Tudo | Administração: Não | Requisitos do sistema: nenhum try {     $hostname = $env:COMPUTERNAME     if ([string]::IsNullOrEmpty($hostname)) {         Write-Warning "Nome do host não pôde ser determinado"         $hostname = "Desconhecido"     }     Write-Host "Nome do host: $hostname" } catch {     Write-Warning "Nome do host de recuperação de erro: $_"     $hostname = "Erro"     Write-Host "Nome do host: $hostname" }

# 2. CollectionTime Versão # PS: Tudo | Administração: Não | Requisitos do sistema: nenhum try {     $collectionTime = Get-Date     se ($null -eq $collectionTime) {         Write-Warning "Não foi possível recuperar a data/hora atual"         $collectionTime = "Desconhecido"     }     Write-Host "Hora da Coleção: $collectionTime" } catch {     Write-Warning "Data/hora de recuperação de erro: $_"     $collectionTime = "Erro"     Write-Host "Hora da Coleção: $collectionTime" }

# Registry: Secure Boot Main Key (3 values)

# 3. SecureBootEnabled # Versão PS: 3.0+ | Administração: pode ser necessário | Requisitos do sistema: uefi/sistema capaz de inicialização segura try {     $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop     Write-Host "Inicialização segura habilitada: $secureBootEnabled" } catch {     Write-Warning "Não é possível determinar status de inicialização segura por meio de cmdlet: $_"     # Tente o fallback do registro     try {         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop         $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled         Write-Host "Inicialização segura habilitada: $secureBootEnabled"     } catch {         Write-Warning "Não é possível determinar o status de Inicialização Segura por meio do registro. O sistema pode não dar suporte a UEFI/Inicialização Segura.".         $secureBootEnabled = $null         Write-Host "Inicialização segura habilitada: não disponível"     } }

# 4. HighConfidenceOptOut Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop     $highConfidenceOptOut = $regValue.HighConfidenceOptOut     Write-Host "Alta Confiança Opt Out: $highConfidenceOptOut" } catch {     Write-Warning "Chave de registro HighConfidenceOptOut não encontrada ou inacessível"     $highConfidenceOptOut = $null     Write-Host "Alta confiança opt out: Not Available" }

# 5. AvailableUpdates Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop     $availableUpdates = $regValue.AvailableUpdates     se ($null -ne $availableUpdates) {         # Converter em formato hexadecimal         $availableUpdatesHex = "0x{0:X}" -f $availableUpdates         Write-Host "Atualizações disponível: $availableUpdatesHex"     } else {         Write-Host "Disponível Atualizações: Não Disponível"     } } catch {     Write-Warning "AvailableUpdates registry key not found or inaccessible"     $availableUpdates = $null     Write-Host "Atualizações disponível: não disponível" }

# Registry: Servicing Key (3 values)

# 6. UEFICA2023Status Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Status -ErrorAction Stop     $uefica 2023Status = $regValue.UEFICA2023Status     Write-Host "UEFI CA 2023 Status: $uefica 2023Status" } catch {     Write-Warning "UEFICA2023Status registry key not found or inaccessible"     $uefica 2023Status = $null     Write-Host "Status da UEFI CA 2023: não disponível" }

# 7. UEFICA2023Capable Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop     $uefica 2023Capable = $regValue.UEFICA2023Capable     Write-Host "UEFI CA 2023 Capable: $uefica 2023Capable" } catch {     Write-Warning "UEFICA2023Gável chave de registro não encontrada ou inacessível"     $uefica 2023Capable = $null     Write-Host "UEFI CA 2023 Capable: Not Available" }

# 8. UEFICA2023Error Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop     $uefica 2023Error = $regValue.UEFICA2023Error     Write-Host "Erro da UEFI CA 2023: $uefica 2023Error" } catch {     Write-Warning "UEFICA2023Error registry key not found or inaccessible"     $uefica 2023Error = $null     Write-Host "Erro da UEFI CA 2023: não disponível" }

# Registry: Device Attributes (7 values)

# 9. OEMManufacturerName Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop     $oemManufacturerName = $regValue.OEMManufacturerName     se ([string]::IsNullOrEmpty($oemManufacturerName)) {         Write-Warning "OEMManufacturerName está vazio"         $oemManufacturerName = "Desconhecido"     }     Write-Host "Nome do fabricante do OEM: $oemManufacturerName" } catch {     Write-Warning "Chave de registro OEMManufacturerName não encontrada ou inacessível"     $oemManufacturerName = $null     Write-Host "Nome do fabricante do OEM: não disponível" }

# 10. OEMModelSystemFamily Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop     $oemModelSystemFamily = $regValue.OEMModelSystemFamily     se ([string]::IsNullOrEmpty($oemModelSystemFamily)) {         Write-Warning "OEMModelSystemFamily está vazio"         $oemModelSystemFamily = "Desconhecido"     }     Write-Host "Família do Sistema de ModeloS OEM: $oemModelSystemFamily" } catch {     Write-Warning "Chave do registro OEMModelSystemFamily não encontrada ou inacessível"     $oemModelSystemFamily = $null     Write-Host "Família do Sistema de ModeloS OEM: Não Disponível" }

# 11. OEMModelNumber Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop     $oemModelNumber = $regValue.OEMModelNumber     se ([string]::IsNullOrEmpty($oemModelNumber)) {         Write-Warning "OEMModelNumber está vazio"         $oemModelNumber = "Desconhecido"     }     Write-Host "Número do modelo OEM: $oemModelNumber" } catch {     Write-Warning "Chave do registro OEMModelNumber não encontrada ou inacessível"     $oemModelNumber = $null     Write-Host "Número do modelo OEM: não disponível" }

# 12. FirmwareVersion Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop     $firmwareVersion = $regValue.FirmwareVersion     se ([string]::IsNullOrEmpty($firmwareVersion)) {         Write-Warning "FirmwareVersion está vazio"         $firmwareVersion = "Desconhecido"     }     Write-Host "Versão do firmware: $firmwareVersion" } catch {     Write-Warning "Chave de registro firmwareVersion não encontrada ou inacessível"     $firmwareVersion = $null     Write-Host "Versão do firmware: não disponível" }

# 13. FirmwareReleaseDate Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop     $firmwareReleaseDate = $regValue.FirmwareReleaseDate     se ([string]::IsNullOrEmpty($firmwareReleaseDate)) {         Write-Warning "FirmwareReleaseDate está vazio"         $firmwareReleaseDate = "Desconhecido"     }     Write-Host "Data de lançamento do firmware: $firmwareReleaseDate" } catch {     Write-Warning "Chave de registro FirmwareReleaseDate não encontrada ou inacessível"     $firmwareReleaseDate = $null     Write-Host "Data de lançamento do firmware: não disponível" }

# 14. OSArchitecture Versão # PS: Tudo | Administração: Não | Requisitos do sistema: nenhum try {     $osArchitecture = $env:PROCESSOR_ARCHITECTURE     if ([string]::IsNullOrEmpty($osArchitecture)) {         # Tente o fallback do registro         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop         $osArchitecture = $regValue.OSArchitecture     }     if ([string]::IsNullOrEmpty($osArchitecture)) {         Write-Warning "OSArchitecture não pôde ser determinada"         $osArchitecture = "Desconhecido"     }     Write-Host "Arquitetura do sistema operacional: $osArchitecture" } catch {     Write-Warning "Erro ao recuperar OSArchitecture: $_"     $osArchitecture = "Desconhecido"     Write-Host "Arquitetura do sistema operacional: $osArchitecture" }

# 15. CanAttemptUpdateAfter (FILETIME) Versão # PS: Tudo | Administração: pode ser necessário | Requisitos do sistema: nenhum try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop     $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter     # Converter FILETIME em DateTime se for um número válido     se ($null -ne $canAttemptUpdateAfter -e $canAttemptUpdateAfter -is [long]) {         try {             $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter)         } catch {             Write-Warning "Não foi possível converter CanAttemptUpdateAfter FILETIME em DateTime"         }     }     Write-Host "Pode tentar atualizar após: $canAttemptUpdateAfter" } catch {     Write-Warning "Chave de registro CanAttemptUpdateAfter não encontrada ou inacessível"     $canAttemptUpdateAfter = $null     Write-Host "Pode tentar atualizar depois: não disponível" }

# Event Logs: System Log (5 values)

# 16-20. Event Log queries # Versão PS: 3.0+ | Administração: pode ser necessário para o log do sistema | Requisitos do sistema: nenhum try {     $allEventIds = @(1801, 1808)     $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)

    if ($events.Count -eq 0) {         Write-Warning "Nenhum evento de Inicialização Segura (1801/1808) encontrado no log do sistema"         $latestEventId = $null         $bucketId = $null         $confidence = $null         $event 1801Count = 0         $event 1808Count = 0         Write-Host "ID de evento mais recente: não disponível"         Write-Host "ID do bucket: não disponível"         Write-Host "Confiança: Não Disponível"         Write-Host "Contagem do Evento 1801: 0"         Write-Host "Contagem do Evento 1808: 0"     } else {         # 16. LatestEventId         $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -Primeiro 1         se ($null -eq $latestEvent) {             Write-Warning "Não foi possível determinar o evento mais recente"             $latestEventId = $null             Write-Host "ID do evento mais recente: não disponível"         } else {             $latestEventId = $latestEvent.Id             Write-Host "ID do evento mais recente: $latestEventId"         }

        # 17. BucketID - Extracted from Event 1801/1808 se ($null -ne $latestEvent -e $null -ne $latestEvent.Message) {             se ($latestEvent.Message -match 'BucketId:\s*(.+)') {                 $bucketId = $matches[1]. Trim()                 Write-Host "ID do bucket: $bucketId"             } else {                 Write-Warning "BucketId não encontrado na mensagem de evento"                 $bucketId = $null                 Write-Host "ID do bucket: não encontrada no evento"             }         } else {             Write-Warning "O último evento ou mensagem é nulo, não é possível extrair BucketId"             $bucketId = $null             Write-Host "ID do bucket: não disponível"         }

        # 18. Confidence - Extracted from Event 1801/1808 se ($null -ne $latestEvent -e $null -ne $latestEvent.Message) {             se ($latestEvent.Message -match 'BucketConfidenceLevel:\s*(.+)') {                 $confidence = $matches[1]. Trim()                 Write-Host "Confiança: $confidence"             } else {                 Write-Warning "nível de confiança não encontrado na mensagem de evento"                 $confidence = $null                 Write-Host "Confiança: não encontrada no evento"             }         } else {             Write-Warning "O último evento ou mensagem é nulo, não é possível extrair Confiança"             $confidence = $null             Write-Host "Confiança: Não Disponível"         }

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

        # 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808})         $event 1808Count = $event 1808Array.Count         Write-Host "Contagem do Evento 1808: $event 1808Count"     } } catch {     Write-Warning "Logs de eventos de recuperação de erro. Pode exigir privilégios de administrador: $_"     $latestEventId = $null     $bucketId = $null     $confidence = $null     $event 1801Count = 0     $event 1808Count = 0     Write-Host "ID do evento mais recente: erro"     Write-Host "ID do bucket: erro"     Write-Host "Confiança: Erro"     Write-Host "Contagem do Evento 1801: 0"     Write-Host "Contagem do Evento 1808: 0" }

# WMI/CIM Queries (4 values)

# 21. OSVersion # Versão PS: 3.0+ (use Get-WmiObject para 2.0) | Administração: Não | Requisitos do sistema: nenhum try {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     se ($null -eq $osInfo -ou [string]::IsNullOrEmpty($osInfo.Version)) { {         Write-Warning "Não foi possível recuperar a versão do sistema operacional"         $osVersion = "Desconhecido"     } else {         $osVersion = $osInfo.Version     }     Write-Host "Versão do sistema operacional: $osVersion" } catch {     Write-Warning "Versão do sistema operacional de recuperação de erro: $_"     $osVersion = "Desconhecido"     Write-Host "Versão do sistema operacional: $osVersion" }

# 22. LastBootTime # Versão PS: 3.0+ (use Get-WmiObject para 2.0) | Administração: Não | Requisitos do sistema: nenhum try {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     se ($null -eq $osInfo -ou $null -eq $osInfo.LastBootUpTime) {         Write-Warning "Não foi possível recuperar a última hora de inicialização"         $lastBootTime = $null         Write-Host "Última hora de inicialização: não disponível"     } else {         $lastBootTime = $osInfo.LastBootUpTime         Write-Host "Última Hora de Inicialização: $lastBootTime"     } } catch {     Write-Warning "Recuperação de erro na última hora de inicialização: $_"     $lastBootTime = $null     Write-Host "Última Hora de Inicialização: Não Disponível" }

# 23. BaseBoardManufacturer # Versão PS: 3.0+ (use Get-WmiObject para 2.0) | Administração: Não | Requisitos do sistema: nenhum try {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     se ($null -eq $baseBoard -ou [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { {         Write-Warning "Não foi possível recuperar o fabricante do quadro de base"         $baseBoardManufacturer = "Desconhecido"     } else {         $baseBoardManufacturer = $baseBoard.Manufacturer     }     Write-Host "Fabricante do Quadro de Base: $baseBoardManufacturer" } catch {     Write-Warning "Fabricante de base de recuperação de erro: $_"     $baseBoardManufacturer = "Desconhecido"     Write-Host "Fabricante do Quadro de Base: $baseBoardManufacturer" }

# 24. BaseBoardProduct # Versão PS: 3.0+ (use Get-WmiObject para 2.0) | Administração: Não | Requisitos do sistema: nenhum try {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     se ($null -eq $baseBoard -ou [string]::IsNullOrEmpty($baseBoard.Product)) { {         Write-Warning "Não foi possível recuperar o produto de baseboard"         $baseBoardProduct = "Desconhecido"     } else {         $baseBoardProduct = $baseBoard.Product     }     Write-Host "Produto de Base: $baseBoardProduct" } catch {     Write-Warning "Produto de base de recuperação de erro: $_"     $baseBoardProduct = "Desconhecido"     Write-Host "Produto de base: $baseBoardProduct"}

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.