PCのスペックは、1台を見るだけなら設定画面、ファイルに残すならmsinfo32、一覧の表にするならPowerShellでCSVに出すのがいちばん早い方法です。どれもWindowsの標準機能で、管理者権限がなくても使えます。この記事では、1台での確認方法、CSVへの出力とExcelでの文字化けの直し方、よくあるつまずき、社内の複数台のスペックを集める方法を順に説明します。
スペックを一覧にする順番
- 1
画面で見る
設定・msinfo32
- 2
コマンドで出す
systeminfo・PowerShell
- 3
CSVにする
Export-Csv・文字化け対策
- 4
複数台を集める
共有フォルダー・1画面で管理
1台のスペックを画面で確認する
設定のバージョン情報
Windows 11では「設定 → システム → バージョン情報」、Windows 10では「設定 → システム → 詳細情報」を開きます。スタートボタンを右クリックして「システム」を選んでも、Windowsキー + Pause を押しても同じ画面が出ます。
「デバイスの仕様」に、デバイス名・プロセッサ(CPU)・実装RAM(メモリ)・システムの種類(64ビットかどうか)が並び、「Windowsの仕様」にエディション(Home・Proなど)とバージョン(23H2・24H2など)が出ます。Windows 11の版によっては、ストレージやグラフィックスの容量も表示されます。横の「コピー」ボタンで内容をそのまま貼り付けられるので、保守業者や購買担当に伝えるときに便利です。
ストレージの容量と空きは「設定 → システム → ストレージ」、メモリの空きスロットはタスクマネージャー(Ctrl + Shift + Esc)の「パフォーマンス → メモリ」で確認できます。メモリを増やせるかどうかを見るときは、スロットの欄を見てください。
msinfo32で全項目を見てファイルに出す
Windowsキー + R で「ファイル名を指定して実行」を開き、msinfo32 と入力すると「システム情報」が開きます。最初の「システムの要約」に、OSの名前とバージョン・システム製造元・システムモデル(機種)・プロセッサ・BIOSのバージョン・インストール済みの物理メモリがまとまっています。ディスクの型番や容量は「コンポーネント → 記憶域 → ディスク」にあります。
「ファイル → エクスポート」を選ぶと、表示中の項目をテキストファイルに保存できます(「ファイル → 保存」は msinfo32 でしか開けない .nfo 形式です)。コマンドで書き出すこともできます。
msinfo32 /report C:\temp\%COMPUTERNAME%.txt書き出しには数十秒〜数分かかることがあります。全項目が入るため情報は多いのですが、1台分で何千行にもなり、複数台を比べる表には向きません。
コマンドでスペックを出す
systeminfo
コマンドプロンプトで systeminfo を実行すると、ホスト名・OSの名前とバージョン・システム製造元・システムモデル・プロセッサ・BIOSのバージョン・物理メモリの合計・ネットワークカード(IPアドレス)・適用済みの更新プログラムが出ます。管理者権限は不要です。
systeminfo /fo csv > %USERPROFILE%\Desktop\systeminfo.csv/fo csv を付けるとCSV形式になり、Excelで開けます。ただしストレージの型番や容量は出ません。ディスクまで一覧にするなら、次のPowerShellを使います。
PowerShellのGet-ComputerInfo
PowerShell(Windows 10・11とWindows Server 2016以降に標準で入っているWindows PowerShell 5.1)では、Get-ComputerInfo で機種・OS・メモリなどを1回で取れます。項目が多いので、必要なものだけを指定します。
Get-ComputerInfo -Property CsName, CsManufacturer, CsModel, OsName, OsVersion, OsBuildNumber, CsNumberOfLogicalProcessors, CsTotalPhysicalMemory取得に数秒〜十数秒かかることがあります。また、WindowsProductName はWindows 11でも「Windows 10」と表示されることがあります(レジストリの古い値を読むため)。OSの名前は OsName を見てください。
Get-CimInstanceで部品ごとに出す
CPU・メモリ・ディスクを部品ごとに見るなら、Get-CimInstance でWMIのクラスを読み出します。どれも自分のPCを読むだけなら管理者権限は要りません。
| クラス | 分かること | 主なプロパティ |
|---|---|---|
| Win32_ComputerSystem | メーカー・機種・メモリの合計・サインイン中の利用者 | Manufacturer, Model, TotalPhysicalMemory, UserName |
| Win32_Processor | CPUの名前・コア数・スレッド数 | Name, NumberOfCores, NumberOfLogicalProcessors |
| Win32_PhysicalMemory | 差してあるメモリ1枚ごとの容量・速度・スロット | Capacity, Speed, DeviceLocator |
| Win32_DiskDrive | 物理ディスクの型番・容量・接続方式 | Model, Size, InterfaceType |
| Win32_LogicalDisk | Cドライブなどの容量と空き | DeviceID, Size, FreeSpace |
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors
Get-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator, @{ n = '容量GB'; e = { $_.Capacity / 1GB } }, Speed
Get-CimInstance Win32_DiskDrive | Select-Object Model, InterfaceType, @{ n = '容量GB'; e = { [math]::Round($_.Size / 1GB) } }
Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, @{ n = '容量GB'; e = { [math]::Round($_.Size / 1GB, 1) } }, @{ n = '空きGB'; e = { [math]::Round($_.FreeSpace / 1GB, 1) } }Windows Serverで確かめるとき
PC版 月1,800円/台(初期費用0円)・サーバー版 月20,000円/台。初月無料ではじめられます(税別・目安)
1台分のスペックをCSVに出力する
台帳に貼るなら、1台を1行にまとめたCSVにするのが扱いやすい形です。次をPowerShellで実行すると、デスクトップに「PC名.csv」ができます。
$cs = Get-CimInstance Win32_ComputerSystem
$os = Get-CimInstance Win32_OperatingSystem
$bios = Get-CimInstance Win32_BIOS
$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
$mem = (Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum).Sum
$disk = Get-CimInstance Win32_DiskDrive | ForEach-Object { "$($_.Model) $([math]::Round($_.Size / 1GB))GB" }
$c = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'"
$ip = Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike '127.*' -and $_.IPAddress -notlike '169.254.*' }
[pscustomobject]@{
PC名 = $env:COMPUTERNAME
利用者 = $cs.UserName
メーカー = $cs.Manufacturer
機種 = $cs.Model
シリアル = $bios.SerialNumber
OS = $os.Caption
ビルド = $os.BuildNumber
CPU = $cpu.Name.Trim()
コア数 = $cpu.NumberOfCores
メモリGB = [math]::Round($mem / 1GB)
ディスク = $disk -join ' / '
C空きGB = [math]::Round($c.FreeSpace / 1GB, 1)
C容量GB = [math]::Round($c.Size / 1GB, 1)
IPアドレス = $ip.IPAddress -join ' '
取得日 = Get-Date -Format 'yyyy-MM-dd'
} | Export-Csv "$env:USERPROFILE\Desktop\$env:COMPUTERNAME.csv" -Encoding UTF8 -NoTypeInformationExcelで文字化けさせないコツ
- Windows PowerShell 5.1では -Encoding UTF8 を付ける。BOM付きのUTF-8で書き出されるので、ダブルクリックでExcelを開いても日本語が化けません。付けないと既定の文字コード(ASCII)になり、日本語が「?」になります。
- PowerShell 7では -Encoding utf8BOM を指定する。PowerShell 7の UTF8 はBOMなしのため、Excelで開くと文字化けします。
- -NoTypeInformation を付ける。5.1では、付けないと1行目に「#TYPE …」という行が入ります(PowerShell 7では既定で入りません)。
- すでに文字化けしたCSVは、Excelの「データ → テキストまたはCSVから」で開き直す。「元のファイル」で「65001: Unicode (UTF-8)」を選ぶと正しく読めます。
よくあるつまずきと直し方
- 「このシステムではスクリプトの実行が無効になっている」と出る:Windows 10・11のPCは、既定で .ps1 ファイルを実行できない設定です。上のコードを .ps1 に保存して配るときは、
powershell -ExecutionPolicy Bypass -File .\get-spec.ps1のように、その実行のときだけ許可して動かします。PC全体の設定は変えずに済みます。 - 容量がカタログの値より小さい:PowerShellの 1GB は 1,024の3乗バイトで、メーカーの表記(1,000の3乗バイト)と単位が違います。512GBのSSDは、約477GBと表示されます。
- メモリが「実装RAM」より少なく出る:Win32_ComputerSystem の TotalPhysicalMemory は、Windowsが使える量です。グラフィックスなどに取られた分が引かれるため、差してあるメモリの量は Win32_PhysicalMemory の Capacity を合計して見ます。
- SSDかHDDかが分からない:Win32_DiskDrive では見分けられません。
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Sizeの MediaType で確かめます(仮想マシンなどでは Unspecified と出ることがあります)。 - Windowsのバージョン(23H2・24H2など)が出ない:Win32_OperatingSystem にはありません。
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').DisplayVersionで読み出せます。古いOSが残っていないかを数える方法は、Windows 10のPCが何台残っているか確かめる方法にまとめています。
複数台のスペックを集める方法
Invoke-Commandで管理用のPCから集める
ドメインに参加しているPCなら、管理用のPCから Invoke-Command で、各PCで同じコマンドを動かして結果を集められます。PC名を1行に1台書いた pc-list.txt を用意し、次のように実行します。
$pcs = Get-Content .\pc-list.txt
$result = Invoke-Command -ComputerName $pcs -ErrorAction SilentlyContinue -ScriptBlock {
$cs = Get-CimInstance Win32_ComputerSystem
[pscustomobject]@{
機種 = $cs.Model
OS = (Get-CimInstance Win32_OperatingSystem).Caption
CPU = (Get-CimInstance Win32_Processor | Select-Object -First 1).Name.Trim()
メモリGB = [math]::Round(((Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum).Sum) / 1GB)
}
}
$result | Select-Object PSComputerName, 機種, OS, CPU, メモリGB |
Export-Csv .\pc-spec-all.csv -Encoding UTF8 -NoTypeInformation
$pcs | Where-Object { $_ -notin $result.PSComputerName } # つながらなかったPC前提として、各PCでWinRM(リモート管理)が有効になっていること、実行する人が各PCの管理者であることが必要です。Windows 10・11のPCは既定で無効なので、各PCで管理者として Enable-PSRemoting -Force を実行するか、グループポリシーでまとめて有効にします。Windows Server 2012以降は既定で有効です。前提条件の詳しい確かめ方は、社内PCのWindows Update適用状況をまとめて確認する方法で説明しています。
ワークグループでは手間が大きい
ADのないワークグループのPCでもInvoke-Commandは使えますが、管理用のPC側で接続先を信頼する設定(TrustedHosts)を足し、各PCではWinRMの有効化に加えて、ネットワークを「プライベート」にし、ローカルの管理者アカウントで遠隔から操作できるようにする設定が要ります。どれも安全のための制限をゆるめる方向の設定なので、台数分の作業に加えて、社内で扱いを決めてからでないと進めにくいのが実情です。
各PCで実行して共有フォルダーに集める
ワークグループで現実的なのは、上の「1台分のCSV」のスクリプトを各PCで実行し、出力先を共有フォルダーにする方法です。最後の行の書き出し先を、たとえば \\fileserver\pc-spec\PC名.csv に変えて、利用者に実行してもらうか、ログオン時に動くようタスクスケジューラに登録します。共有フォルダーには、利用者が書き込める権限を付けておきます。集まったCSVは、次の1行で1つの表にまとめられます。
Get-ChildItem \\fileserver\pc-spec\*.csv | Import-Csv | Export-Csv .\pc-spec-all.csv -Encoding UTF8 -NoTypeInformationExcelの「データ → データの取得 → ファイルから → フォルダーから」でまとめる方法と、台帳に載せる項目の選び方は、PC管理台帳の項目とExcelでの作り方にまとめています。
この方法で残る手間
- 結果は、実行したその時点のものです。メモリの増設やディスクの交換、OSの更新があっても、もう一度集めるまで表は変わりません。
- 電源が入っていないPCや、社外に持ち出しているPCは集まりません。どのPCが抜けているかを、PCの一覧と突き合わせて確かめる必要があります。
- スクリプトの配布・実行の依頼・タスクスケジューラへの登録を、台数分行います。
全PC・サーバーのスペック台帳を自動でいつも最新にする
スクリプトで集める場合と、1か所で管理する場合
スクリプトで集める
- 実行したその時点のスペックしか分からない
- 電源オフ・持ち出し中のPCは表から抜ける
- 台数の分だけ、配布と実行を頼んで回る
1か所で管理する
- 部署・利用者・OS・CPU・メモリ・空き容量・IPアドレスの台帳が自動で作られる
- いつも最新で、CSVでも出せる
- 止まっているPC・容量不足・古いOSがすぐ分かる
アプリップリキーを使うと、アプリップリキーを入れた全PC・サーバーについて、次のことが1画面でできます。
- スペックの台帳が自動で作られる:台数・部署・利用者・OS・CPU・メモリ・空き容量・IPアドレスが並ぶ台帳が自動で作られ、いつも最新です。スクリプトを配ったり、実行を頼んで回ったりする必要がありません。
- CSVでそのまま出せる:入れ替えの計画や監査の資料、保守業者への依頼に、一覧をそのまま使えます。Excelの台帳を手で直さなくて済みます。
- 止まっているPCがすぐ分かる:24時間通信がないPCは「要確認」になり、7日以上連絡のないPCは一覧で見られます。最後に通信した日時が分かるので、表から抜けたPCを探して回る必要がありません。
- 容量不足や古いOSに先に気づける:空き容量の少ないPCや古いOSのPCがすぐ分かり、「PCが重い」「更新が入らない」と言われる前に手を付けられます。1台ごとのカルテで、そのPCの基本情報とスペックを1画面で見られるので、PCの前に行かなくても問い合わせに答えられます。
ADは要らず、ワークグループのPCでもそのまま使えます。PC版・サーバー版があり、PCとサーバーを同じ画面で管理できます。管理の機能は、インターネットにつながっているPC・サーバーが対象です。インターネットにつながっていないPCは対象外なので、これまでどおりスクリプトや台帳で管理してください。
さらに、アプリップリキーはPC及びサーバーのログインを本人のスマホを鍵にしたワンタッチログインにします(リモートデスクトップでのログインも対象)。2要素認証になりますが、毎回の操作はスマホでワンタッチなので、社員の手間はほとんど増えません。誰がそのPCに入ったかも1人単位で残ります。
Windowsのログインは、パスワードを知っていれば誰でも本人として入れます
スペックの台帳で、どんなPCが何台あるかを正しくつかんでも、ログインがIDとパスワードだけなら、パスワードを知っている人は誰でもそのPCに入れます。台帳が「何があるか」を示すのに対し、2要素認証は「本人しか入れない」状態をつくります。
パスワードだけのログイン
漏れた・推測された・メモを見られたパスワードで、そのまま本人として入れます。記録の上でも本人と区別できません。
2要素認証のログイン
パスワードに加えて、本人だけが持つもの(スマホなど)が必要です。パスワードを知っているだけでは入れません。
- VPNや社内Wi-Fiから社内に入られたあと、被害がPC・サーバーへ広がるかどうかは、このログインの部分で決まります。
- 顔・指紋・PIN(Windows Hello)は、ログインを簡単にする仕組みで、2要素認証ではありません。
- 2要素認証というと手間が増えそうですが、本人のスマホを鍵にしたワンタッチログインなら、初回の設定のあとはPINもWindowsのパスワードも打たずに、スマホのワンタッチで入れます。長いパスワードを覚えて打つ手間は、むしろなくなります。
ADなしで全PC・サーバーをまとめて管理する方法の比較は、ADなしでPC・サーバーを一元管理する方法にまとめています。
よくある質問
PCのスペックをいちばん早く確認する方法は何ですか
Windows 11は「設定 → システム → バージョン情報」、Windows 10は「設定 → システム → 詳細情報」を開くと、プロセッサ(CPU)・実装RAM(メモリ)・システムの種類が表示されます。Windowsキー + Pause キーでも同じ画面が開きます。「コピー」ボタンで、表示された内容をそのままメールなどに貼り付けられます。
PCのスペックをファイルに出力するにはどうすればよいですか
msinfo32(システム情報)を開き「ファイル → エクスポート」を選ぶと、全項目をテキストファイルに保存できます。表計算で扱うなら、PowerShellの Get-CimInstance で必要な項目だけを集め、Export-Csv でCSVに出すと、Excelでそのまま開けます。
CSVをExcelで開くと文字化けするのはなぜですか
ExcelはBOM(文字コードの目印)がないUTF-8のCSVを、日本語の環境では別の文字コードとして読むためです。Windows PowerShell 5.1では Export-Csv -Encoding UTF8 でBOM付きになり文字化けしません。PowerShell 7では -Encoding utf8BOM を指定してください。
社内の複数台のスペックをまとめて集める方法はありますか
ドメイン環境なら、管理用のPCから Invoke-Command で各PCの情報を集められます(各PCでWinRMの有効化が必要)。ワークグループでは設定の手間が大きいため、各PCで同じスクリプトを実行して共有フォルダーにCSVを書き出し、あとで1つにまとめる方法が現実的です。
いまの運用を棚卸ししてみる
スペックを集めて回る作業のように、PCの数だけ人の手がかかる作業は、ログインの記録や退職者のアカウントの扱いなどにも残っていることがあります。applippliの無料棚卸しでは、10問・約3分で、PCログインまわりの対応状況を「解決済み/一部解決/人手で対応/未解決」に仕分けた一覧にできます。個人情報の入力は不要で、会員登録もありません。
参考・出典
- Microsoft Learn「Get-ComputerInfo」
- Microsoft Learn「Get-CimInstance」
- Microsoft Learn「Export-Csv」
- Microsoft Learn「systeminfo」
- Microsoft Learn「Invoke-Command」
※ 本記事は2026年11月時点の一般的な解説です。画面の名称やメニューの場所、表示される項目は、Windows・Excelの版や表示言語によって変わることがあります。
