PowerShellを使ってBIOS設定を読み取る方法

PowerShellでfirmware情報を読むで最初に求められるのはcommand暗記ではなく、何を正しい結果とするかの定義です。結論は「Get-CimInstance Win32_BIOSでmanufacturer、SMBIOS version、release date、serial等を取得できますが、Secure Bootやboot orderなど全設定を標準commandだけで列挙はできません。変更はvendor管理toolと機種別手順へ分離します。」。標準CIMで読めるのはBIOS/UEFIの識別情報で、設定menuの全項目はvendor固有interfaceことを確認し、表示、加工、変更を混同しない順序で進めます。

目次

manufacturerとmodelをBIOS版より先に確認する

BIOS情報の確認では、Win32_BIOSのManufacturer、SMBIOSBIOSVersion、ReleaseDateを一台の機種情報と組み合わせます。SerialNumberは資産識別情報なので共有範囲を限定し、記事や外部ログへ貼りません。結果が複数または空の場合は仮想環境や管理プロバイダーの制約を確認し、更新可否を推測しません。

  • Get-ComputerInfoでmanufacturerとmodelを確認する
  • Win32_BIOSのavailable propertyをGet-CimClassで確認する
  • UEFI/Secure Boot対応はConfirm-SecureBootUEFIの適用条件を確認する
  • vendor tool、管理権限、BitLocker回復keyの運用を確認する

Win32_BIOSのversionとReleaseDateを読む

BIOS基本情報

Get-CimInstance -ClassName Win32_BIOS |
  Select-Object Manufacturer,Name,SMBIOSBIOSVersion,Version,ReleaseDate,SerialNumber

serial numberは資産情報なので共有範囲を限定します。

machine modelと組み合わせる

Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer,Model,SystemType
Get-CimInstance Win32_BIOS | Select-Object SMBIOSBIOSVersion,ReleaseDate

同じBIOS文字列でもmodel違いがあるため組にします。

CIM schemaを確認

Get-CimClass -ClassName Win32_BIOS | Select-Object -ExpandProperty CimClassProperties |
  Select-Object Name,CimType,Qualifiers

実装が提供するpropertyを読みます。存在するpropertyでもnullの場合があります。

Secure Boot状態を読む

Confirm-SecureBootUEFI

UEFI/Secure Boot非対応や権限不足ではerrorになります。Falseと取得errorを区別します。

BitLocker保護状態を先に見る

Get-BitLockerVolume | Select-Object MountPoint,VolumeStatus,ProtectionStatus,EncryptionMethod

firmware変更前の安全確認例です。recovery keyそのものを画面やlogへ出しません。

UEFI・Secure Boot・BIOS表記を分ける

WMI/CIMのVersion、SMBIOSBIOSVersion、ReleaseDateはvendorが報告する値で、設定値一覧ではありません。Legacy BIOSとUEFIを単純な文字列だけで断定せず、Secure Boot commandやsystem informationと合わせます。ReleaseDateが新しいから安全とは限らず、vendor advisoryとmodel適用表を確認します。

更新前にBitLocker保護状態を確認する

  • Get-WmiObjectを新規手順の既定にする
  • Win32_BIOSを全設定一覧と説明する
  • serialを無制限に共有する
  • Secure Boot Falseとquery errorを混同する
  • model違いのfirmwareを適用する

serial numberを共有資料から除外する

読取は変更を伴いません。firmware update、boot order、TPM、Secure Boot変更は起動不能やBitLocker recoveryを招くため、標準PowerShellの一般例として実行しません。必要ならAC電源、model一致、vendor package署名、backup、recovery key保管、rollback可否、maintenanceを確認します。失敗時はvendorの復旧手順とout-of-band管理を使い、推測で設定を重ねません。

vendor更新操作を情報取得から切り離す

msinfo32やfirmware setup画面のread-only確認、vendor inventoryとversionを照合します。host名、model、serial、BIOS version、取得日時を一組で記録します。変更していない調査ではBitLockerとSecure Boot状態が前後で変化していないことを確認します。

machine modelとfirmware baselineをobject化する

Win32_BIOSからManufacturer、SMBIOSBIOSVersion、ReleaseDate、SerialNumberを読み、Win32_ComputerSystemのmodelと対応付けます。更新可否は表示versionの文字列比較だけで決めず、vendorのmodel別releaseとBitLocker/Secure Boot前提を確認します。

computer systemとBIOSを一つのsnapshotにする

$bios=Get-CimInstance Win32_BIOS -ErrorAction Stop
$cs=Get-CimInstance Win32_ComputerSystem -ErrorAction Stop
[pscustomobject]@{Manufacturer=$cs.Manufacturer;Model=$cs.Model;BiosVendor=$bios.Manufacturer;BiosVersion=$bios.SMBIOSBIOSVersion;Released=$bios.ReleaseDate}

firmware非対応と権限拒否をCategoryで記録する

  • firmware情報を取得:BIOS objectが一件でmachine modelと矛盾せず、ReleaseDateをDateTimeとして取得できる
  • 機能非対応:SerialNumber等がnull/vendor既定文字列でも取得失敗と区別しUnknownとして扱う
  • CIM・UEFI access error:CIM access、WMI repository、SecureBoot非対応、BitLocker cmdlet不在は例外/非適用に分ける

Secure Boot非対応と権限不足を試す

try { $sb=Confirm-SecureBootUEFI -ErrorAction Stop; [pscustomobject]@{State='Supported';SecureBoot=$sb} } catch { [pscustomobject]@{State='UnavailableOrDenied';Category=$_.CategoryInfo.Category} }

UEFI/Legacy、Secure Boot on/off、vendor既定serial、CIM errorをtestします。model、BIOS version/date、firmware mode、BitLocker ProtectionStatusを保存し、vendor release noteと照合します。

BIOS更新可否はversion文字列だけで決めず、正確なmodelとvendor公開情報を照合します。BitLockerやSecure Bootの確認はread-onlyで行い、更新操作は回復手段を準備した別工程にします。

公式情報・参考資料

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次