適用先
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_script

# 1. HostName # PS バージョン: すべて |管理: いいえ |システム要件: なし { を試す     $hostname = $env:COMPUTERNAME     if ([string]::IsNullOrEmpty($hostname)) {         Write-Warning "ホスト名を決定できませんでした"         $hostname = "Unknown"     }     Write-Host "Hostname: $hostname" } catch {     Write-Warning "ホスト名の取得中にエラーが発生しました: $_"     $hostname = "Error"     "Hostname: $hostname"を Write-Host }

# 2. CollectionTime # PS バージョン: すべて |管理: いいえ |システム要件: なし { を試す     $collectionTime = Get-Date     if ($null -eq $collectionTime) {         Write-Warning "現在の日付/時刻を取得できませんでした"         $collectionTime = "Unknown"     }     Write-Host "コレクション時間: $collectionTime" } catch {     Write-Warning "日付/時刻の取得中にエラーが発生しました: $_"     $collectionTime = "Error"     Write-Host "コレクション時間: $collectionTime" }

# Registry: Secure Boot Main Key (3 values)

# 3. SecureBootEnabled # PS バージョン: 3.0 以降 |管理: 必要な場合があります |システム要件: UEFI/セキュア ブート対応システム { を試す     $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop     Write-Host "セキュア ブートが有効: $secureBootEnabled" } catch {     Write-Warning "コマンドレットを使用してセキュア ブートの状態を判断できません: $_"     # レジストリ フォールバックを試してください     {を試す         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop         $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled         Write-Host "セキュア ブートが有効: $secureBootEnabled"     } catch {         Write-Warning "レジストリを介してセキュア ブートの状態を判断できません。 システムが UEFI/セキュア ブートをサポートしていない可能性があります。         $secureBootEnabled = $null         Write-Host "セキュア ブートが有効: 使用できません"     } }

# 4. HighConfidenceOptOut # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop     $highConfidenceOptOut = $regValue.HighConfidenceOptOut     Write-Host "高信頼オプトアウト: $highConfidenceOptOut" } catch {     "HighConfidenceOptOut レジストリ キーが見つからない、またはアクセスできない" Write-Warning     $highConfidenceOptOut = $null     Write-Host "高信頼オプトアウト: 利用できません" }

# 5. AvailableUpdates # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop     $availableUpdates = $regValue.AvailableUpdates     if ($null -ne $availableUpdates) {         # 16 進形式に変換します         $availableUpdatesHex = "0x{0:X}" -f $availableUpdates         Write-Host "使用可能なUpdates: $availableUpdatesHex"     } else {         Write-Host "使用可能なUpdates: 使用できません"     } } catch {     "AvailableUpdates レジストリ キーが見つからない、またはアクセスできない" Write-Warning     $availableUpdates = $null     Write-Host "使用可能なUpdates: 使用できません" }

# Registry: Servicing Key (3 values)

# 6. UEFICA2023Status # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $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 レジストリ キーが見つからないか、アクセスできません"     $uefica 2023Status = $null     Write-Host "UEFI CA 2023 Status: Not Available" }

# 7. UEFICA2023Capable # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop     $uefica 2023Capable = $regValue.UEFICA2023Capable     Write-Host "UEFI CA 2023 対応: $uefica 2023Capable" } catch {     Write-Warning "UEFICA2023Capable レジストリ キーが見つからないかアクセスできない"     $uefica 2023Capable = $null     Write-Host "UEFI CA 2023 対応: 使用できません" }

# 8. UEFICA2023Error # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop     $uefica 2023Error = $regValue.UEFICA2023Error     Write-Host "UEFI CA 2023 エラー: $uefica 2023Error" } catch {     Write-Warning "UEFICA2023Error レジストリ キーが見つからないかアクセスできない"     $uefica 2023Error = $null     Write-Host "UEFI CA 2023 エラー: 使用できません" }

# Registry: Device Attributes (7 values)

# 9. OEMManufacturerName # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop     $oemManufacturerName = $regValue.OEMManufacturerName     if ([string]::IsNullOrEmpty($oemManufacturerName)) {         Write-Warning "OEMManufacturerName が空です"         $oemManufacturerName = "Unknown"     }     Write-Host "OEM 製造元名: $oemManufacturerName" } catch {     "OEMManufacturerName レジストリ キーが見つからない、またはアクセスできない" Write-Warning     $oemManufacturerName = $null     Write-Host "OEM 製造元名: 使用できません" }

# 10. OEMModelSystemFamily # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop     $oemModelSystemFamily = $regValue.OEMModelSystemFamily     if ([string]::IsNullOrEmpty($oemModelSystemFamily)) {         "OEMModelSystemFamily が空です" Write-Warning         $oemModelSystemFamily = "Unknown"     }     Write-Host "OEM モデル システム ファミリ: $oemModelSystemFamily" } catch {     "OEMModelSystemFamily レジストリ キーが見つからない、またはアクセスできない" Write-Warning     $oemModelSystemFamily = $null     Write-Host "OEM モデル システム ファミリ: 使用できません" }

# 11. OEMModelNumber # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop     $oemModelNumber = $regValue.OEMModelNumber     if ([string]::IsNullOrEmpty($oemModelNumber)) {         "OEMModelNumber が空です" Write-Warning         $oemModelNumber = "Unknown"     }     Write-Host "OEM モデル番号: $oemModelNumber" } catch {     "OEMModelNumber レジストリ キーが見つからない、またはアクセスできない" Write-Warning     $oemModelNumber = $null     Write-Host "OEM モデル番号: 使用できません" }

# 12. FirmwareVersion # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop     $firmwareVersion = $regValue.FirmwareVersion     if ([string]::IsNullOrEmpty($firmwareVersion)) {         Write-Warning "FirmwareVersion が空です"         $firmwareVersion = "Unknown"     }     Write-Host "ファームウェアバージョン: $firmwareVersion" } catch {     "FirmwareVersion レジストリ キーが見つからないか、アクセスできない" Write-Warning     $firmwareVersion = $null     Write-Host "ファームウェア のバージョン: 使用できません" }

# 13. FirmwareReleaseDate # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop     $firmwareReleaseDate = $regValue.FirmwareReleaseDate     if ([string]::IsNullOrEmpty($firmwareReleaseDate)) {         Write-Warning "FirmwareReleaseDate が空です"         $firmwareReleaseDate = "Unknown"     }     Write-Host "ファームウェアのリリース日: $firmwareReleaseDate" } catch {     "FirmwareReleaseDate レジストリ キーが見つからない、またはアクセスできない" Write-Warning     $firmwareReleaseDate = $null     Write-Host "ファームウェアのリリース日: 使用できません" }

# 14. OSArchitecture # PS バージョン: すべて |管理: いいえ |システム要件: なし { を試す     $osArchitecture = $env:PROCESSOR_ARCHITECTURE     if ([string]::IsNullOrEmpty($osArchitecture)) {         # レジストリ フォールバックを試してください         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop         $osArchitecture = $regValue.OSArchitecture     }     if ([string]::IsNullOrEmpty($osArchitecture)) {         Write-Warning "OSArchitecture を決定できませんでした"         $osArchitecture = "Unknown"     }     Write-Host "OS アーキテクチャ: $osArchitecture" } catch {     Write-Warning "OSArchitecture の取得中にエラーが発生しました: $_"     $osArchitecture = "Unknown"     Write-Host "OS アーキテクチャ: $osArchitecture" }

# 15. CanAttemptUpdateAfter (FILETIME) # PS バージョン: すべて |管理: 必要な場合があります |システム要件: なし { を試す     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop     $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter     # 有効な数値の場合は FILETIME を DateTime に変換します     if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) {         {を試す             $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter)         } catch {             Write-Warning "CanAttemptUpdateAfter FILETIME を DateTime に変換できませんでした"         }     }     Write-Host "後で更新を試みることができます: $canAttemptUpdateAfter" } catch {     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 Stop)

    if ($events.Count -eq 0) {         Write-Warning "システム ログにセキュア ブート イベント (1801/1808) が見つかりません"         $latestEventId = $null         $bucketId = $null         $confidence = $null         $event 1801Count = 0         $event 1808Count = 0         Write-Host "最新のイベント ID: 使用できません"         Write-Host "バケット ID: 使用できません"         Write-Host "信頼度: 利用できません"         Write-Host "Event 1801 Count: 0"         Write-Host "Event 1808 Count: 0"     } それ以外の {         # 16. LatestEventId         $latestEvent = $events |Sort-Object TimeCreated -Descending |Select-Object -First 1         if ($null -eq $latestEvent) {             Write-Warning "最新のイベントを特定できませんでした"             $latestEventId = $null             Write-Host "最新のイベント ID: 使用できません"         } else {             $latestEventId = $latestEvent.Id             Write-Host "最新のイベント ID: $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 "Bucket ID: $bucketId"             } else {                 Write-Warning "BucketId not found in event message"                 $bucketId = $null                 Write-Host "バケット ID: イベントで見つかりません"             }         } それ以外の {             Write-Warning "最新のイベントまたはメッセージが null、BucketId を抽出できません"             $bucketId = $null             Write-Host "バケット ID: 使用できません"         }

        # 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 "自信: $confidence"             } else {                 Write-Warning "イベント メッセージに信頼度レベルが見つかりません"                 $confidence = $null                 Write-Host "Confidence: Not found in event"             }         } それ以外の {             Write-Warning "最新のイベントまたはメッセージが null、信頼度を抽出できません"             $confidence = $null             Write-Host "信頼度: 利用できません"         }

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

        # 20. Event1808Count $event 1808Array = @($events | Where-Object {$_.Id -eq 1808})         $event 1808Count = $event 1808Array.Count         Write-Host "Event 1808 Count: $event 1808Count"     } } catch {     Write-Warning "イベント ログの取得中にエラーが発生しました。 管理者特権が必要な場合があります: $_"     $latestEventId = $null     $bucketId = $null     $confidence = $null     $event 1801Count = 0     $event 1808Count = 0     Write-Host "最新のイベント ID: エラー"     Write-Host "バケット ID: エラー"     Write-Host "Confidence: Error"     Write-Host "Event 1801 Count: 0"     Write-Host "Event 1808 Count: 0" }

# WMI/CIM Queries (4 values)

# 21. OSVersion # PS バージョン: 3.0 以降 (2.0 に Get-WmiObject を使用) |管理: いいえ |システム要件: なし { を試す     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -or [string]::IsNullOrEmpty($osInfo.Version)) {         Write-Warning "OS バージョンを取得できませんでした"         $osVersion = "Unknown"     } else {         $osVersion = $osInfo.Version     }     Write-Host "OS バージョン: $osVersion" } catch {     Write-Warning "OS バージョンの取得中にエラーが発生しました: $_"     $osVersion = "Unknown"     Write-Host "OS バージョン: $osVersion" }

# 22. LastBootTime # PS バージョン: 3.0 以降 (2.0 に Get-WmiObject を使用) |管理: いいえ |システム要件: なし { を試す     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -or $null -eq $osInfo.LastBootUpTime) {         Write-Warning "前回のブート時刻を取得できませんでした"         $lastBootTime = $null         Write-Host "最終ブート時間: 使用できません"     } それ以外の {         $lastBootTime = $osInfo.LastBootUpTime         Write-Host "Last Boot Time: $lastBootTime"     } } catch {     Write-Warning "前回のブート時の取得中にエラーが発生しました: $_"     $lastBootTime = $null     Write-Host "最終ブート時間: 使用できません" }

# 23. BaseBoardManufacturer # PS バージョン: 3.0 以降 (2.0 に Get-WmiObject を使用) |管理: いいえ |システム要件: なし { を試す     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) {         Write-Warning "ベースボードの製造元を取得できませんでした"         $baseBoardManufacturer = "Unknown"     } else {         $baseBoardManufacturer = $baseBoard.Manufacturer     }     Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" } catch {     Write-Warning "ベースボードの製造元の取得中にエラーが発生しました: $_"     $baseBoardManufacturer = "Unknown"     Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" }

# 24. BaseBoardProduct # PS バージョン: 3.0 以降 (2.0 に Get-WmiObject を使用) |管理: いいえ |システム要件: なし { を試す     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Product)) {         Write-Warning "ベースボード製品を取得できませんでした"         $baseBoardProduct = "Unknown"     } else {         $baseBoardProduct = $baseBoard.Product     }     "Baseboard 製品: $baseBoardProduct"を Write-Host } catch {     Write-Warning "ベースボード製品の取得中にエラーが発生しました: $_"     $baseBoardProduct = "Unknown"     Write-Host "Baseboard 製品: $baseBoardProduct"}

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。