Applies To
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

原始出版日期: 2025年11月17日

KB ID:5072718

安全啟動庫存資料收集腳本範例

複製貼上此範例腳本,並依照您的環境進行修改:Sample Secure Boot Inventory Data Collection 腳本。

Sample_Secure_Boot_Inventory_Data_Collection_script

# 1. HostName # PS 版本:全部 |管理員:不 |系統需求:無 試試看 {     $hostname = $env:COMPUTERNAME     如果 ([string]::IsNullOrEmpty ($hostname) ) {         Write-Warning「主機名稱無法確定」         $hostname = 「未知」     }     Write-Host「主機名稱:$hostname」 } 抓 {     Write-Warning 「錯誤取得主機名稱:$_」     $hostname = 「錯誤」     Write-Host 「主機名稱:$hostname」 }

# 2. CollectionTime # PS 版本:全部 |管理員:不 |系統需求:無 試試看 {     $collectionTime = 取得日期     若 ($null -eq $collectionTime) {         Write-Warning「無法取得當前日期/時間」         $collectionTime = 「未知」     }     Write-Host「收集時間:$collectionTime」 } 抓 {     Write-Warning「錯誤取回日期/時間:$_」     $collectionTime = 「錯誤」     Write-Host「採集時間:$collectionTime」 }

# Registry: Secure Boot Main Key (3 values)

# 3. SecureBootEnabled # PS版本:3.0+ |管理員:可能需要 |系統需求:支援 UEFI/安全開機的系統 試試看 {     $secureBootEnabled = Confirm-SecureBootUEFI -錯誤行動停止     Write-Host「啟用安全開機:$secureBootEnabled」 } 抓 {     Write-Warning「無法透過 cmdlet 判斷安全開機狀態:$_」     # 試試登記後備     試試看 {         $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\State」 -名稱 UEFISecureBootEnabled -ErrorAction 停止         $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled         Write-Host「安全開機啟用:$secureBootEnabled」     } 抓 {         Write-Warning「無法透過登錄檔判斷安全開機狀態。 系統可能不支援 UEFI/安全開機。」         $secureBootEnabled = $null         Write-Host「安全開機啟用:不可用」     } }

# 4. HighConfidenceOptOut # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot」-名稱 HighConfidenceOptOut -ErrorAction 停止     $highConfidenceOptOut = $regValue.HighConfidenceOptOut     Write-Host「高信心選擇退出:$highConfidenceOptOut」 } 抓 {     Write-Warning 「HighConfidenceOptOut 登錄金鑰未找到或無法存取」     $highConfidenceOptOut = $null     Write-Host「高信心選擇退出:不可用」 }

# 5. AvailableUpdates # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot」-Name AvailableUpdates -ErrorAction 停止     $availableUpdates = $regValue.可用更新     如果 ($null -ne $availableUpdates) {         # 轉換為十六進位格式         $availableUpdatesHex = “0x{0:X}” -f $availableUpdates         Write-Host 「可用匯報:$availableUpdatesHex」     } 否則 {         Write-Host 「可用匯報:不可用」     } } 抓 {     Write-Warning 「AvailableUpdates 登錄檔金鑰未找到或無法存取」     $availableUpdates = $null     Write-Host「可用匯報:不可用」 }

# Registry: Servicing Key (3 values)

# 6. UEFICA2023Status # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\Servicing」 -名稱 UEFICA2023Status -ErrorAction 停止     $uefica 2023Status = $regValue.UEFICA2023Status     Write-Host 「UEFI CA 2023 狀態:$uefica 2023 狀態」 } 抓 {     Write-Warning「UEFICA2023狀態登錄檔金鑰未找到或無法存取」     $uefica 2023年狀態 = $null     Write-Host 「UEFI CA 2023 狀態:不可用」 }

# 7. UEFICA2023Capable # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\Servicing」 -名稱 UEFICA2023Capable -ErrorAction 停止     $uefica 2023Capable = $regValue.UEFICA2023Capable     Write-Host 「UEFI CA 2023 支援:$uefica 2023 支援」 } 抓 {     Write-Warning 「UEFICA2023Capable 登錄檔金鑰未找到或無法存取」     $uefica 2023 能力 = $null     Write-Host 「UEFI CA 2023 支援:不可用」 }

# 8. UEFICA2023Error # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\Servicing」 -名稱 UEFICA2023Error -ErrorAction 停止     $uefica 2023Error = $regValue.UEFICA2023Error     Write-Host 「UEFI CA 2023 錯誤:$uefica 2023Error」 } 抓 {     Write-Warning「UEFICA2023 錯誤登錄檔金鑰未找到或無法存取」     $uefica 2023Error = $null     Write-Host「UEFI CA 2023 錯誤:不可用」 }

# Registry: Device Attributes (7 values)

# 9. OEMManufacturerName # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑 “HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\DeviceAttributes” -Name OEMManufacturerName -ErrorAction 停止     $oemManufacturerName = $regValue.OEMManufacturerName     如果 ([string]::IsNullOrEmpty ($oemManufacturerName) ) {         Write-Warning 「OEMManufacturerName 是空的」         $oemManufacturerName = 「未知」     }     Write-Host 「原廠製造商名稱:$oemManufacturerName」 } 抓 {     Write-Warning 「OEMManufacturerName 登錄檔金鑰未找到或無法存取」     $oemManufacturerName = $null     Write-Host 「原廠製造商名稱:無法取得」 }

# 10. OEMModelSystemFamily # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑 “HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\DeviceAttributes” -名稱 OEMModelSystemFamily -ErrorAction 停止     $oemModelSystemFamily = $regValue.OEMModelSystemFamily     如果 ([string]::IsNullOrEmpty ($oemModelSystemFamily) ) {         Write-Warning 「OEMModelSystemFamily 是空的」         $oemModelSystemFamily = 「未知」     }     Write-Host 「OEM 型號系統家族:$oemModelSystemFamily」 } 抓 {     Write-Warning 「OEMModelSystemFamily 登錄金鑰未找到或無法存取」     $oemModelSystemFamily = $null     Write-Host 「OEM 系統系列:無法取得」 }

# 11. OEMModelNumber # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\DeviceAttributes」 -名稱 OEMModelNumber -ErrorAction 停止     $oemModelNumber = $regValue.OEMModelNumber     如果 ([string]::IsNullOrEmpty ($oemModelNumber) ) {         Write-Warning「OEMModelNumber 是空的」         $oemModelNumber = 「未知」     }     Write-Host 「原廠型號:$oemModelNumber」 } 抓 {     Write-Warning 「OEMModelNumber 登錄金鑰未找到或無法存取」     $oemModelNumber = $null     Write-Host 「原廠型號:無法取得」 }

# 12. FirmwareVersion # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\DeviceAttributes」-名稱 FirmwareVersion -ErrorAction 停止     $firmwareVersion = $regValue.FirmwareVersion     如果 ([string]::IsNullOrEmpty ($firmwareVersion) ) {         Write-Warning「韌體版本為空」         $firmwareVersion = 「未知」     }     Write-Host 「韌體版本:$firmwareVersion」 } 抓 {     Write-Warning「找不到或無法存取韌體版本登錄鍵」     $firmwareVersion = $null     Write-Host 「韌體版本:無法使用」 }

# 13. FirmwareReleaseDate # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes」 -Name FirmwareReleaseDate -ErrorAction 停止     $firmwareReleaseDate = $regValue.FirmwareReleaseDate     如果 ([string]::IsNullOrEmpty ($firmwareReleaseDate) ) {         Write-Warning「韌體發布日期為空」         $firmwareReleaseDate = 「未知」     }     Write-Host 「韌體發行日期:$firmwareReleaseDate」 } 抓 {     Write-Warning 「FirmwareReleaseDate 登錄金鑰未找到或無法存取」     $firmwareReleaseDate = $null     Write-Host 「韌體發行日期:無法取得」 }

# 14. OSArchitecture # PS 版本:全部 |管理員:不 |系統需求:無 試試看 {     $osArchitecture = $env:PROCESSOR_ARCHITECTURE     如果 ([string]::IsNullOrEmpty ($osArchitecture) ) {         # 試試登記後備         $regValue = Get-ItemProperty -路徑「HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\DeviceAttributes」-名稱 OSArchitecture -ErrorAction 停止         $osArchitecture = $regValue.OSArchitecture     }     如果 ([string]::IsNullOrEmpty ($osArchitecture) ) {         Write-Warning 「OSArchitecture無法確定」         $osArchitecture = 「未知」     }     Write-Host 「作業系統架構:$osArchitecture」 } 抓 {     Write-Warning 「錯誤取回 OSArchitecture: $_」     $osArchitecture = 「未知」     Write-Host 「作業系統架構:$osArchitecture」 }

# 15. CanAttemptUpdateAfter (FILETIME) # PS 版本:全部 |管理員:可能需要 |系統需求:無 試試看 {     $regValue = Get-ItemProperty -路徑 “HKLM:\SYSTEM\CurrentControlSet\Control\Control\SecureBoot\DeviceAttributes” -Name CanAttemptUpdateafter -ErrorAction 停止     $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter     # 如果 FILETIME 是有效號碼,請將 FILETIME 轉換成 DateTime。     若 ($null -ne $canAttemptUpdateAfter -且 $canAttemptUpdateAfter -是 [long]) {         試試看 {             $canAttemptUpdateAfter = [DateTime]::FromFileTime ($canAttemptUpdateAfter)         } 抓 {             Write-Warning 「無法將 CanAttemptUpdateAfter FILETIME 轉換為 DateTime」         }     }     Write-Host「可嘗試更新:$canAttemptUpdateAfter」 } 抓 {     Write-Warning 「CanAttemptUpdateAfter 登錄檔金鑰未找到或無法存取」     $canAttemptUpdateAfter = $null     Write-Host「可嘗試更新:無法使用」 }

# Event Logs: System Log (5 values)

# 16-20. Event Log queries # PS版本:3.0+ |管理員:可能需要用於系統日誌 |系統需求:無 試試看 {     $allEventIds = @ (1801, 1808)     $events = @ (Get-WinEvent -FilterHashtable @{LogName='System';ID=$allEventIds} -MaxEvents 20 -ErrorAction 停止)

    if ($events.Count -eq 0) {         Write-Warning「系統日誌中 (1801/1808) 無安全開機事件」         $latestEventId = $null         $bucketId = $null         $confidence = $null         $event 1801 計數 = 0         $event 1808年計數 = 0         Write-Host「最新事件ID:無法取得」         Write-Host 「桶 ID:不可用」         Write-Host 「信心:不可得」         Write-Host 「事件1801 計數:0」         Write-Host 「事件1808 計數:0」     } 否則 {         # 16. 最新事件ID         $latestEvent = $events |Sort-Object 時間創造 -下降 |Select-Object -第一位         若 ($null -eq $latestEvent) {             Write-Warning「無法確定最新事件」             $latestEventId = $null             Write-Host 「最新事件 ID:無法取得」         } 否則 {             $latestEventId = $latestEvent.Id             Write-Host「最新事件ID:$latestEventId」         }

        # 17. BucketID - Extracted from Event 1801/1808 如果 ($null -ne $latestEvent -且 $null -ne $latestEvent.訊息) {             如果 ($latestEvent.Message -match 'BucketId:\s* (.+) ') {                 $bucketId = $matches[1]。修剪 ()                 Write-Host「桶ID:$bucketId」             } 否則 {                 Write-Warning「事件訊息中找不到 BucketId」                 $bucketId = $null                 Write-Host 「桶 ID:事件中找不到」             }         } 否則 {             Write-Warning「最新事件或訊息為空,無法擷取 BucketId」             $bucketId = $null             Write-Host 「桶 ID:無法使用」         }

        # 18. Confidence - Extracted from Event 1801/1808 如果 ($null -ne $latestEvent -且 $null -ne $latestEvent.訊息) {             如果 ($latestEvent.Message -match 'BucketConfidenceLevel:\s* (.+) ') {                 $confidence = $matches[1]。修剪 ()                 Write-Host 「信心:$confidence」             } 否則 {                 Write-Warning 「事件訊息中找不到信心水準」                 $confidence = $null                 Write-Host 「自信:事件中找不到」             }         } 否則 {             Write-Warning「最新事件或訊息為空,無法取得信心」             $confidence = $null             Write-Host 「信心:不可得」         }

        # 19. Event1801Count $event 1801Array = @ ($events |Where-Object {$_.ID -eq 1801})         $event 1801Count = $event 1801Array.Count         Write-Host 「事件1801年計數:$event 1801年計數」

        # 20. Event1808Count $event 1808Array = @ ($events |Where-Object {$_.ID -eq 1808})         $event 1808Count = $event 1808Array.Count         Write-Host 「事件1808計數:$event 1808計數」     } } 抓 {     Write-Warning「取得事件日誌時發生錯誤。 可能需要管理員權限:$_”     $latestEventId = $null     $bucketId = $null     $confidence = $null     $event 1801 計數 = 0     $event 1808年計數 = 0     Write-Host「最新事件ID:錯誤」     Write-Host「桶 ID:錯誤」     Write-Host「信心:錯誤」     Write-Host「事件1801 計數:0」     Write-Host 「事件1808 計數:0」 }

# WMI/CIM Queries (4 values)

# 21. OSVersion # PS 版本:3.0+ (2.0 版本使用 Get-WmiObject) |管理員:不 |系統需求:無 試試看 {     $osInfo = Get-CimInstance Win32_OperatingSystem -錯誤行動停止     若 ($null -eq $osInfo -或 [string]::IsNullOrEmpty ($osInfo.版本) ) {         Write-Warning「無法取得作業系統版本」         $osVersion = 「未知」     } 否則 {         $osVersion = $osInfo.版本     }     Write-Host 「作業系統版本:$osVersion」 } 抓 {     Write-Warning 「錯誤取得作業系統版本:$_」     $osVersion = 「未知」     Write-Host「作業系統版本:$osVersion」 }

# 22. LastBootTime # PS 版本:3.0+ (2.0 版本使用 Get-WmiObject) |管理員:不 |系統需求:無 試試看 {     $osInfo = Get-CimInstance Win32_OperatingSystem -錯誤行動停止     如果 ($null -eq $osInfo -或 $null -eq $osInfo.LastBootUpTime) {         Write-Warning「無法恢復上次開機時間」         $lastBootTime = $null         Write-Host「最後開機時間:無法使用」     } 否則 {         $lastBootTime = $osInfo.LastBootUpTime(最後啟動時間)         Write-Host「最後一次開機時間:$lastBootTime」     } } 抓 {     Write-Warning 「錯誤取回最後一次開機時間:$_」     $lastBootTime = $null     Write-Host 「最後開機時間:不可用」 }

# 23. BaseBoardManufacturer # PS 版本:3.0+ (2.0 版本使用 Get-WmiObject) |管理員:不 |系統需求:無 試試看 {     $baseBoard = Get-CimInstance Win32_BaseBoard -錯誤動作停止     若 ($null -eq $baseBoard -或 [string]::IsNullOrEmpty ($baseBoard.Manufacturer) ) {         Write-Warning 「無法取得踢腳板製造商」         $baseBoardManufacturer = 「未知」     } 否則 {         $baseBoardManufacturer = $baseBoard。製造商     }     Write-Host 「踢腳板製造商:$baseBoardManufacturer」 } 抓 {     Write-Warning「錯誤取回踢腳板製造商:$_」     $baseBoardManufacturer = 「未知」     Write-Host「踢腳板製造商:$baseBoardManufacturer」 }

# 24. BaseBoardProduct # PS 版本:3.0+ (2.0 版本使用 Get-WmiObject) |管理員:不 |系統需求:無 試試看 {     $baseBoard = Get-CimInstance Win32_BaseBoard -錯誤動作停止     若 ($null -eq $baseBoard -或 [string]::IsNullOrEmpty ($baseBoard.Product) ) {         Write-Warning「無法取回踢腳板產品」         $baseBoardProduct = 「未知」     } 否則 {         $baseBoardProduct = $baseBoard.積     }     Write-Host 「踢腳板產品:$baseBoardProduct」 } 抓 {     Write-Warning 「檢索踢腳板產品錯誤:$_」     $baseBoardProduct = 「未知」     Write-Host 「踢腳板產品:$baseBoardProduct」}

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。