この記事は公開から2年以上経過しています。
客先で社内の端末管理情報を収集したい要望があり、各々のPCでWindowsのシステム情報などから端末情報を調査して手入力で集計するのが非効率と感じたたため、PowerShellとWMI(Windows Management Instrumentation)を使い、PCベンダー名/型番、CPUの名称/最大クロック数、コア数、トータル物理メモリサイズ、ビデオカード名称、VRAMサイズ、ディスク名称、総サイズ、HDDまたはSSD種別、OSバージョン等の基本情報をJSON形式で取得するスクリプトを作成して提案してみたので紹介します。
マルチCPU/マルチGPU環境は未検証です。
サンプルソースコード
【hwinfo.ps1】
# システム情報/メモリー情報取得
$sys = Get-WmiObject Win32_ComputerSystem | Select-Object Manufacturer, Model, Name, TotalPhysicalMemory
# CPU情報取得
$cpu = Get-WmiObject Win32_Processor | Select-Object DeviceID, Name, MaxClockSpeed, NumberOfEnabledCore
# グラフィックボード情報取得
$video = Get-WmiObject Win32_VideoController | Select-Object DeviceID, Caption, AdapterRAM
# ディスク情報取得(1)
$disk = Get-WmiObject Win32_DiskDrive | Select-Object Model, Size | Sort-Object Model
# ディスク情報取得(2) ... MediaType=3:HDD, 4:SSD
$disktype = Get-WMiObject -namespace Root\Microsoft\Windows\Storage -class msft_physicaldisk | Select-Object FriendlyName, Model,
MediaType | Sort-Object FriendlyName
# OS情報
$os = Get-WmiObject Win32_OperatingSystem | Select-Object Version
$dic = [System.Collections.Generic.Dictionary[String, PSObject]]::new()
$dic.Add("system", $sys)
$dic.Add("cpu", $cpu)
$dic.Add("video", $video)
$dic.Add("disk", $disk)
$dic.Add("diskType", $disktype)
$dic.Add("os", $os)
$json = ConvertTo-Json $dic
# デバイス情報を表示
Write-Host $json
# デバイス情報をクリップボードに格納
# Set-Clipboard $json
説明
上記PowerShellスクリプトを実行するとPCの基本スペックを取得して以下のようなJSON形式で表示(またはクリップボードに格納)します。
少しスクリプトを弄れば、TSVで出力してEXCELに貼り付けたり、WebAPIに直接投げたりすることも可能です。
出力情報を追加・削除したい場合は、参考ウェブサイトのWMIの説明をご参照ください。
私のサブマシン(ラップトップ)での実行結果は以下のとおりです。
【出力結果】
{
"system": {
"Manufacturer": "Dell Inc.",
"Model": "XPS 13 7390",
"Name": "HostName",
"TotalPhysicalMemory": 16952041472
},
"cpu": {
"DeviceID": "CPU0",
"Name": "Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz",
"MaxClockSpeed": 1608,
"NumberOfEnabledCore": 6
},
"video": {
"DeviceID": "VideoController1",
"Caption": "Intel(R) UHD Graphics",
"AdapterRAM": 1073741824
},
"disk": {
"Model": "Micron 2200S NVMe 512GB",
"Size": 512105932800
},
"diskType": {
"FriendlyName": "Micron 2200S NVMe 512GB",
"Model": "Micron 2200S NVMe 512GB",
"MediaType": 4
},
"os": {
"Version": "10.0.19044"
}
}
※DISK TYPEのMediaTypeは、3がHDDで4がSSDとなります。
参考ウェブサイトなど
- Microsoft Learn
Windows Management Instrumentation (Windows Management Instrumentation)
以上です。