どうやら、BiosFirmwareType プロパティを取得するための GetFirmwareType API がエラーになっているらしい。でもって、他のすべてのプロパティも取得できず...(以下に続く)
$ErrorActionPreference をいじってみても、Get-ComputerInfo は完全に口を閉ざすだけ。まぁ、多分こうなると思ってたけど。
GetFirmwareType は Windows 8/Server 2012 から登場したもの。Windows 7/2008 R2 以前は GetFirmwareEnvironmentVariable を使うそうな。
GetFirmwareType Function
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getfirmwaretype
Minimum supported client Windows 8 [desktop apps only]
Minimum supported server Windows Server 2012 [desktop apps only]
GetFirmwareEnvironmentVariableA function
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getfirmwareenvironmentvariablea
Minimum supported client Windows Vista, Windows XP with SP1 [desktop apps | UWP apps]
Minimum supported server Windows Server 2003 [desktop apps | UWP apps]
このバグのフィードバックがあった↓。Windows PowerShell 5.1 で修正する気はなんとなく感じられない。7 の余命もあとわずかだし。
Get-ComputerInfo : Unable to find an entry point named 'GetFirmwareType' in DLL 'kernel32.dll'." #3023
https://github.com/PowerShell/PowerShell/issues/3023
オープンソース&クロスプラットフォームな PowerShell Core 6(https://aka.ms/pscore6)だと、このバグへの対応が行われていて、Windows 7 でも Get-ComputerInfo が利用可能でした。ただし、GetFirmwareType に対応する BiosFirmwareType プロパティは空っぽ。
Add wrappers around native API calls to catch exceptions. (#3023) #3375
https://github.com/PowerShell/PowerShell/pull/3375
それ以外のプロパティはおおむね取得できてると思う。
PowerShell Core 6 の現在のバージョン(現時点で最新は v6.2.3)は、Windows 8.1 以前での日本語の扱いが苦手らしいし(漢字が二重になるとか)、オープンソースでリリース サイクルが早いので(更新が面倒)、常用する気にはまったくならない。Windows 7 でのGet-ComputerInfo のほうをあきらめることにする(Msinfo32 とか WMIC とかで代用できるし、BIOSかUEFIかはBCDEDITでwinload.exeか.efiかで分かるし)。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。