Home > Windows にまつわる e.t.c.

PowerShell でコンピューターのハード情報を取得する


物理コンピューターで Windows OS 稼働させている時に、ハードウェアスペックを知りたくなることがあります。

そんな時は、WMI を簡単にハンドリングできる PowerShell で確認するが簡単です。

 

ざっくりハードウェア情報を調べる

ざっくり情報であれば、Win32_ComputerSystemProduct に情報がまとまっています。

Get-WmiObject Win32_ComputerSystemProduct

 

基本的なハードウエア情報を調べる

基本的なハードウェア情報ははこんな感じでとります

ホスト名 hostname
メーカー名 (Get-WmiObject Win32_BIOS).Manufacturer
モデル名 (Get-WmiObject Win32_BIOS).Model
シリアル番号 (Get-WmiObject Win32_BIOS).SerialNumber
CPU 名 @((Get-WmiObject Win32_Processor).Name)[0]
物理コア数 $PhysicalCores = 0
(Get-WmiObject Win32_Processor).NumberOfCores | %{ $PhysicalCores += $_}
$PhysicalCores
ソケット数 (Get-WmiObject Win32_ComputerSystem).NumberOfProcessors
CPU データ幅 (Get-WmiObject Win32_Processor).DataWidth
CPU アドレス幅 (Get-WmiObject Win32_Processor).AddressWidth
メモリーサイズ(GB) $Total = 0
Get-WmiObject Win32_PhysicalMemory | % {$Total += $_.Capacity}
[int]($Total/1GB)
ディスク番号/ディスクサイズ(GB)
(*1)
[array]$DiskDrives = Get-WmiObject Win32_DiskDrive | ? {$_.Caption -notmatch "Msft"} | sort Index
$DiskDrives | % { $Index = $_.Index; $Size = [int]($_.Size/1GB); echo "$Index : $Size" }
OS $OS = (Get-WmiObject Win32_OperatingSystem).Caption
$SP = (Get-WmiObject Win32_OperatingSystem).ServicePackMajorVersion
if( $SP -ne 0 ){ $OS += "SP" + $SP }
$OS

(*1)
"Msft" を除外しているのは、マウントされている VHD を対象外にするためです

 

関数にまとめるとこんな感じになります。

#####################################################################
# システム情報
#####################################################################
function QueryServerInfo(){
    $ReturnData = New-Object PSObject | Select-Object HostName,Manufacturer,Model,SN,CPUName,PhysicalCores,Sockets,MemorySize,DiskInfos,OS

    $Win32_BIOS = Get-WmiObject Win32_BIOS
    $Win32_Processor = Get-WmiObject Win32_Processor
    $Win32_ComputerSystem = Get-WmiObject Win32_ComputerSystem
    $Win32_OperatingSystem = Get-WmiObject Win32_OperatingSystem

    # ホスト名
    $ReturnData.HostName = hostname

    # メーカー名
    $ReturnData.Manufacturer = $Win32_BIOS.Manufacturer

    # モデル名
    $ReturnData.Model = $Win32_ComputerSystem.Model

    # シリアル番号
    $ReturnData.SN = $Win32_BIOS.SerialNumber

    # CPU 名
    $ReturnData.CPUName = @($Win32_Processor.Name)[0]

    # 物理コア数
    $PhysicalCores = 0
    $Win32_Processor.NumberOfCores | % { $PhysicalCores += $_}
    $ReturnData.PhysicalCores = $PhysicalCores
    
    # ソケット数
    $ReturnData.Sockets = $Win32_ComputerSystem.NumberOfProcessors
    
    # メモリーサイズ(GB)
    $Total = 0
    Get-WmiObject -Class Win32_PhysicalMemory | % {$Total += $_.Capacity}
    $ReturnData.MemorySize = [int]($Total/1GB)
    
    # ディスク情報
    [array]$DiskDrives = Get-WmiObject Win32_DiskDrive | ? {$_.Caption -notmatch "Msft"} | sort Index
    $DiskInfos = @()
    foreach( $DiskDrive in $DiskDrives ){
        $DiskInfo = New-Object PSObject | Select-Object Index, DiskSize
        $DiskInfo.Index = $DiskDrive.Index              # ディスク番号
        $DiskInfo.DiskSize = [int]($DiskDrive.Size/1GB) # ディスクサイズ(GB)
        $DiskInfos += $DiskInfo
    }
    $ReturnData.DiskInfos = $DiskInfos
    
    # OS 
    $OS = $Win32_OperatingSystem.Caption
    $SP = $Win32_OperatingSystem.ServicePackMajorVersion
    if( $SP -ne 0 ){ $OS += "SP" + $SP }
    $ReturnData.OS = $OS
    
    return $ReturnData
}

 

バッテリーチェック

ノート PC だとバッテリーがどの程度ヘタったているのか気になりますね。

そんな時は powercfg.exe で確認ができます。

# 状態確認
powercfg /batteryreport

 

出力された html フルパスを PowerShell プロンプトに張り付けると、レポートが Web ブラウザで表示されます。

 

ヘタり具合は、Installed batteries の DESIGN CAPACITY と FULL CHARGE CAPACITY を比較します。

 

他にも色々バッテリーに関する情報が取れているので、時々チェックする良いかもです。

Installed batteries バッテリー状態
Recent usage 最近の使用状態(過去3日間)
Battery usage バッテリーの使用状態(過去3日間の電池残量)
Usage history 使用状態履歴
Battery capacity history バッテリーキャパシティ履歴
Battery life estimates 使用状況から推測したバッテリー稼働可能時間

 

Windows エクスペリエンス インデックス

Windows 10(8以降?) では GUI 表示の Windows エクスペリエンス インデックス が無くなっていますが、winsat.exe での評価はまだ生きているので、以下コマンドで Windows エクスペリエンス インデックスを確認することができます。

# 計測
winsat formal -restart clean

# 計測結果の表示
Get-CimInstance Win32_WinSAT

計測

計測結果

 

 

関連情報

関数を PowerShell プロンプトで実行する
http://www.vwnet.jp/Windows/PowerShell/2016100401/UseFunctionInPsPrompt.htm

PowerShell でよく使う OS 情報を取得する方法
http://www.vwnet.jp/Windows/PowerShell/2019031001/GetOsInfo.htm

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.