元の発行日: 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"}