WindowsコマンドプロンプトでPCの詳細情報を取得する方法

Windowsコマンドプロンプトから、OS・ネットワーク・ディスク・ソフトウェア・イベントログの情報を確認する方法を紹介します。ここでは、現在使用しているPCの情報を読み取るコマンドと、結果をローカルファイルに保存する例を扱います。設定の変更や遠隔PCへの接続は行いません。

実行する場所はコマンドプロンプト(cmd.exe)です。Windows Terminalを使う場合は「コマンド プロンプト」タブを選んでください。powershell.exe -NoProfile -Command "…"という例は、CMDからWindows PowerShellを呼び出します。PowerShellの画面にそのまま貼り付ける場合とは引用符や変数の扱いが異なります。まず通常権限で確認し、アクセス拒否が出た場合は、その情報を読む権限があるかを管理者に確認してください。

WMICについて:2026年10月に確認したMicrosoftの案内では、WMICは現在サポートされているWindows 11から削除され、オンデマンド機能(FoD)としても追加できなくなっています。削除対象はwmic.exeであり、WMI自体は引き続きサポートされています。本記事はWMICの再導入を前提とせず、ディスク情報にはGet-CimInstanceを使います。出典:Microsoft:WMICの削除と移行案内。

目次

コマンドプロンプトの基本操作

コマンドプロンプトは、Windowsで多くのシステムタスクを実行するための重要なツールです。ここでは、コマンドプロンプトの基本的な操作方法と起動手順について説明します。

コマンドプロンプトの起動方法

コマンドプロンプトを起動するには、以下の手順に従います:

スタートメニューから起動

  1. スタートメニューを開きます。
  2. 「cmd」または「コマンドプロンプト」と入力します。
  3. 検索結果に表示された「コマンドプロンプト」をクリックします。

ショートカットキーを使用して起動

  1. キーボードのWindowsキー + Rを押して「ファイル名を指定して実行」ダイアログを開きます。
  2. 「cmd」と入力してEnterキーを押します。

基本的なコマンドの使用方法

コマンドプロンプトを起動したら、以下の基本的なコマンドを試してみましょう:

ディレクトリの内容を表示

dirコマンドを使用して、現在のディレクトリの内容を表示します。

dir

ディレクトリの移動

cdコマンドを使用して、ディレクトリを移動します。例えば、「C:\Windows」に移動する場合は次のようにします。/dを付けると、現在のドライブが異なる場合も切り替えられます:

cd /d C:\Windows

コマンドの終了

exitコマンドを使用して、コマンドプロンプトを終了します。

exit

これらの基本操作をマスターすることで、次のステップで紹介する詳細情報を取得するためのコマンドもスムーズに使用できるようになります。

システム情報の取得方法

Windowsのシステム情報を素早く取得するには、コマンドプロンプトでの操作が有効です。ここでは、systeminfoコマンドを使ってシステム情報を取得する方法を解説します。

systeminfoコマンドの使い方

systeminfoコマンドは、PCの詳細なシステム情報を表示するために使用されます。以下の手順に従ってコマンドを実行してください:

コマンドの実行

コマンドプロンプトを開き、以下のコマンドを入力してEnterキーを押します。

systeminfo

このコマンドを実行すると、インストールされているオペレーティングシステム、OSの最終起動日時、メモリの詳細、ネットワーク設定など、詳細なシステム情報が表示されます。

出力結果の読み方

systeminfoは構成情報の確認に使います。CPU使用率の継続測定や故障診断を行うコマンドではありません。以下は英語表示での主な項目名で、日本語環境では表示名が異なります。出力を空白の位置や英語の見出しだけで機械的に解析すると、言語やOSの違いで失敗する場合があります。出典:Microsoft:systeminfo。

OS Name

インストールされているオペレーティングシステムの名前。

OS Version

オペレーティングシステムのバージョン番号。

System Manufacturer

PCの製造元。

System Model

PCのモデル名。

BIOS Version

BIOSのバージョン情報。

Total Physical Memory

PCに搭載されている物理メモリの総量。

Available Physical Memory

利用可能な物理メモリの量。

Network Card(s)

インストールされているネットワークカードの情報。

情報の保存

次の例はユーザープロファイルのフォルダーに保存します。デスクトップはOneDriveなどに移動している場合があるため、固定のDesktopパスは使いません。>は同名ファイルを上書きし、>>は追記します。既存ファイルを残す場合は、実行前に別名にしてください。空白を含むパスにも対応できるよう、保存先を半角の二重引用符で囲みます。

systeminfo > "%USERPROFILE%\systeminfo.txt"

CSV形式で保存する場合は次のようにします。見出しなどは環境によって異なるため、CSVにしても列の意味を確認してから利用してください。

systeminfo /fo csv > "%USERPROFILE%\systeminfo.csv"

出力にはコンピューター名、ドメイン名、製品ID、ネットワーク情報などが含まれる場合があります。サポート窓口や公開掲示板に渡す前に内容を確認し、不要な識別情報を伏せてください。

ネットワーク設定の確認方法

ネットワーク設定を確認することで、接続状態やIPアドレスなどの詳細情報を把握できます。ここでは、ipconfigコマンドを使用してネットワーク設定を確認する手順を説明します。

ipconfigコマンドの使い方

ipconfigコマンドは、ネットワークアダプターの設定情報を表示するために使用されます。以下の手順に従ってコマンドを実行してください:

コマンドの実行

コマンドプロンプトを開き、以下のコマンドを入力してEnterキーを押します。

ipconfig

各アダプターのIPv4・IPv6アドレス、サブネットマスク、デフォルトゲートウェイなどが表示されます。VPNなどの仮想アダプターや未接続のアダプターも含まれることがあります。表示されるアドレスはインターフェイスの設定値であり、インターネット接続の成功や外部から見た公開IPアドレスを保証するものではありません。

主要な出力項目の解説

ipconfigコマンドの出力結果には、次のような重要な項目が含まれています:

IPv4 Address

各ネットワークアダプターに割り当てられたIPv4アドレス。

Subnet Mask

ネットワークのサブネットマスク。

Default Gateway

デフォルトゲートウェイのIPアドレス。インターネットや他のネットワークへの出口として機能します。

詳細情報の取得

さらに詳細な情報を取得するには、ipconfig /allコマンドを使用します。このコマンドは、より多くのネットワーク設定情報を表示します。

ipconfig /all

Physical Address (MAC Address)

ネットワークアダプターの物理アドレス(MACアドレス)。

DHCP Enabled

DHCPが有効かどうかを示します。

Lease Obtained

DHCPでIPアドレスを取得した場合のリース取得日時。固定IPなどでは表示されないことがあります。

Lease Expires

DHCPリースの有効期限。リース更新時には値が変わることがあります。

情報確認と設定変更を区別する

ipconfigとipconfig /allは設定を表示します。一方、/releaseはDHCPで取得した設定を解放して通信を切断する可能性があり、/renewはDHCP設定を更新します。単なる情報収集では実行しないでください。再取得してもIPアドレスが必ず変わるわけではありません。出典:Microsoft:ipconfig。

情報の保存

ipconfig /all > "%USERPROFILE%\networkinfo.txt"

保存結果にはMACアドレス、内部IPアドレス、DNSサーバー、ホスト名などが含まれます。共有する場合は必要な部分だけを抜き出してください。同名ファイルは上書きされます。

ディスク情報の取得方法

ディスクのモデルと容量は、コマンドプロンプトからPowerShellのGet-CimInstanceを呼び出して取得できます。以下の例では、接続先を指定していないため、ローカルPCのWMI情報を読み取ります。ディスクの初期化・修復・フォーマットは行いません。

物理ディスクのモデル・容量を確認

powershell.exe -NoProfile -Command "Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model,Name,Size | Format-List"
  • Model:ディスクのモデル名。
  • Name:デバイス名。例:\\.\PHYSICALDRIVE0。
  • Size:ディスクの容量(バイト)。

これらはWindowsが認識している構成情報です。仮想マシンでは仮想ディスクの情報になり、RAIDや接続方式によって物理機器との対応が分かりにくい場合もあります。この出力だけでは、故障の有無、寿命、読み書き速度を判定できません。出典:Microsoft:Win32_DiskDrive。

論理ドライブの空き容量を確認

powershell.exe -NoProfile -Command "Get-CimInstance -ClassName Win32_LogicalDisk -Filter 'DriveType=3' | Select-Object DeviceID,Description,FileSystem,FreeSpace,Size | Format-List"

DriveType=3でローカル固定ディスクに絞っています。ネットワークドライブやリムーバブルドライブはこの例の対象外です。これは論理ドライブの一覧であり、回復パーティションなどを含む全パーティションの一覧ではありません。

  • DeviceID:C:などのドライブ名。
  • Description:ドライブの種類を表す説明。
  • FileSystem:NTFSなどのファイルシステム。
  • FreeSpace:空き容量(バイト)。
  • Size:論理ドライブの総容量(バイト)。

バイトをGiBに換算するには1,073,741,824で割ります。メーカーが示す10進数のGBとは単位が異なります。値が取得できず空欄になっている場合もあるため、空欄を容量ゼロと解釈しないでください。出典:Microsoft:Win32_LogicalDisk。

情報の保存

powershell.exe -NoProfile -Command "Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model,Name,Size | Format-List" > "%USERPROFILE%\diskinfo.txt"
powershell.exe -NoProfile -Command "Get-CimInstance -ClassName Win32_LogicalDisk -Filter 'DriveType=3' | Select-Object DeviceID,Description,FileSystem,FreeSpace,Size | Format-List" >> "%USERPROFILE%\diskinfo.txt"

1行目で物理ディスク情報を書き出し、2行目で論理ドライブ情報を追記します。Format-Listは人が読むための表示形式です。自動集計では表示文字列を分割せず、PowerShell内のオブジェクトやCSV出力を利用してください。-Commandの中のパイプは二重引用符の内側に置き、CMDのパイプと混同しないようにします。出典:Get-CimInstance、powershell.exeの引数。

インストールされているソフトウェアの一覧表示

ソフトウェアの一覧取得には、アンインストール情報のレジストリを読み取る方法を使います。レジストリの値を書き換える操作は行いません。

wmic productやWin32_Productを使わない理由

wmic productやGet-CimInstance Win32_Productは、すべてのアプリを取得する方法ではありません。Windows Installer経由の製品が主な対象で、問い合わせに伴って整合性のチェックや修復が実行される場合があります。WMICをPowerShellに置き換えるだけでは、このクラスの副作用は避けられません。出典:Microsoft:ソフトウェアのインストール情報の取得。

登録済みのデスクトップアプリを確認

次の1行をコマンドプロンプトで実行します。一般的な64ビットWindowsでは、通常の64ビット版コマンドプロンプトを使用してください。32ビット版から起動したPowerShellでは、見えるレジストリの範囲が変わる場合があります。出典:Microsoft:レジストリリダイレクター。

powershell.exe -NoProfile -Command "$paths = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*','HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'; $paths | Where-Object { Test-Path $_ } | ForEach-Object { Get-ItemProperty -Path $_ } | Where-Object { $_.DisplayName } | Select-Object DisplayName,DisplayVersion,Publisher | Sort-Object DisplayName | Format-List"
  • DisplayName:登録されたアプリ名。
  • DisplayVersion:登録されたバージョン。未登録の場合は空欄です。
  • Publisher:登録された提供元。

この例は、PC全体向けの標準的な登録先、32ビットアプリの代表的な登録先、現在のユーザーの登録先を調べます。Test-Pathで存在するパスだけを対象にします。アクセス拒否などが表示された場合は一覧が不完全な可能性があるため、エラーを無視して「該当アプリなし」と判断しないでください。

一覧の限界と保存方法

Microsoft Storeアプリ、ポータブルアプリ、別ユーザーだけにインストールされたアプリなどを網羅するものではありません。同じ表示名が複数行に出る場合もあります。用途に応じてWindowsの「設定」内のアプリ一覧などと照合してください。

保存する場合は次の1行を実行します。同名ファイルは上書きされます。

powershell.exe -NoProfile -Command "$paths = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*','HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'; $paths | Where-Object { Test-Path $_ } | ForEach-Object { Get-ItemProperty -Path $_ } | Where-Object { $_.DisplayName } | Select-Object DisplayName,DisplayVersion,Publisher | Sort-Object DisplayName | Format-List" > "%USERPROFILE%\softwarelist.txt"

アプリ一覧から業務内容や利用サービスが推測される場合があります。必要なアプリの情報だけを共有してください。

イベントログの確認方法

イベントログは、システムの動作状況やエラーを監視するための重要な情報源です。ここでは、wevtutilコマンドを使ってイベントログを確認する方法を解説します。

wevtutilコマンドの使い方

wevtutilコマンドは、Windowsイベントログを管理するためのツールです。以下の手順に従ってコマンドを実行してください:

イベントログの一覧表示

まず、利用可能なイベントログの一覧を表示します。

wevtutil el

このコマンドを実行すると、システムで利用可能なすべてのイベントログの名前が表示されます。

特定のイベントログの内容を表示

システムログから、新しい順に最大20件を表示する例です。大量の履歴を一度に出力しないよう、件数を指定します。

wevtutil qe System /rd:true /c:20 /f:text

/rd:trueは新しいイベントから読み取る指定、/c:20は最大20件、/f:textはテキスト形式です。ログによって読み取り権限が必要で、未記録・消去済み・保存期限を過ぎたイベントは取得できません。出典:Microsoft:wevtutil。

ログの形式指定

/fオプションで出力形式を指定できます。例えば、テキスト形式(text)、XML形式(xml)などがあります。

イベントログの保存

表示した最大20件をテキストファイルに保存する例です。ログ全体のバックアップではありません。同名ファイルは上書きされます。

wevtutil qe System /rd:true /c:20 /f:text > "%USERPROFILE%\systemlog.txt"

イベント本文にユーザー名、PC名、ファイルパスなどが含まれることがあります。外部に共有する際は、調査に必要な範囲に限定してください。

特定のイベントをフィルタリング

特定のイベントIDや時間範囲でログをフィルタリングすることも可能です。例えば、SystemログのイベントID 1000に一致するものを、新しい順に最大20件取得するには次のようにします。イベントIDはプロバイダーごとに意味が異なるため、番号だけで原因を断定せず、ログ名・プロバイダー名・発生日時・本文を合わせて確認してください。対象のイベントがない場合は何も表示されません。

wevtutil qe System /q:"*[System[(EventID=1000)]]" /rd:true /c:20 /f:text

イベントIDでフィルタリング

特定のイベントIDに絞ってログを取得する方法です。

時間範囲でフィルタリング

特定の時間範囲に絞ってログを取得することもできます。例えば、過去24時間の範囲から新しい順に最大100件を取得する場合は次のようになります。条件に合うイベントが100件を超える場合、これはその全件ではありません。

wevtutil qe System /q:"*[System[TimeCreated[timediff(@SystemTime) <= 86400000]]]" /rd:true /c:100 /f:text

イベントログは状況を調べるための材料です。エラーが記録されていても、それだけで故障原因が確定するわけではありません。次に、取得した情報をローカルレポートにまとめます。

応用例

取得した情報をローカルレポートにまとめる

以下をsystem_report.batとして保存して、コマンドプロンプトから実行する例です。ユーザープロファイル直下にsystem_report.txtを作成します。同名ファイルがある場合は処理を止めるため、前回のレポートを残したまま誤って上書きしません。保存先を変える場合はREPORTの値を編集してください。

@echo off
setlocal
set "REPORT=%USERPROFILE%\system_report.txt"
if exist "%REPORT%" (
  echo Report already exists. Rename it or choose another output file.
  exit /b 1
)
type nul > "%REPORT%"
if errorlevel 1 exit /b 1
echo System Information Report >> "%REPORT%"
echo Collected: %DATE% %TIME% >> "%REPORT%"
echo ==== System ==== >> "%REPORT%"
systeminfo >> "%REPORT%" 2>&1
echo.>> "%REPORT%"
echo ==== Network ==== >> "%REPORT%"
ipconfig /all >> "%REPORT%" 2>&1
echo.>> "%REPORT%"
echo ==== Physical disks ==== >> "%REPORT%"
powershell.exe -NoProfile -Command "Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model,Name,Size | Format-List" >> "%REPORT%" 2>&1
echo.>> "%REPORT%"
echo ==== Logical drives ==== >> "%REPORT%"
powershell.exe -NoProfile -Command "Get-CimInstance -ClassName Win32_LogicalDisk -Filter 'DriveType=3' | Select-Object DeviceID,Description,FileSystem,FreeSpace,Size | Format-List" >> "%REPORT%" 2>&1
echo.>> "%REPORT%"
echo ==== Registered desktop applications ==== >> "%REPORT%"
powershell.exe -NoProfile -Command "$paths = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*','HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'; $paths | Where-Object { Test-Path $_ } | ForEach-Object { Get-ItemProperty -Path $_ } | Where-Object { $_.DisplayName } | Select-Object DisplayName,DisplayVersion,Publisher | Sort-Object DisplayName | Format-List" >> "%REPORT%" 2>&1
echo.>> "%REPORT%"
echo ==== Latest 20 System events ==== >> "%REPORT%"
wevtutil qe System /rd:true /c:20 /f:text >> "%REPORT%" 2>&1
echo Command output: "%REPORT%"
echo Review the file for errors and private information.
endlocal

2>&1でエラーメッセージも同じファイルに記録します。出力ファイルができても、すべての情報を取得できたとは限りません。アクセス拒否やコマンドの失敗がないか確認してください。echo.は区切りの空行です。取得される情報は各コマンドの実行時点のもので、完全に同じ瞬間のスナップショットではありません。

この例は読み取り結果の保存用です。文字コードはコマンドや環境によって異なるため、メモ帳などで日本語が正しく読めるか確認してください。集計用途では、人向けレポートの文字列を無理に解析せず、項目を絞った構造化データの出力を別途用意します。

定期収集・共有時の注意

  • 自動化する前に、必要な項目だけに絞り、取得頻度・保存期間・保存先のアクセス権を決めてください。頻繁な全件収集は避けます。
  • 別アカウントで実行すると、%USERPROFILE%や現在のユーザーのアプリ一覧が変わります。自動実行でも同じ結果になるとは限りません。
  • 本文のバッチは既存ファイルがあると終了します。そのまま定期実行しても履歴は増えません。定期収集には日時別のファイル名や保存世代の管理が別途必要です。
  • レポートの自動メール送信は、この例には含めません。共有の必要性・宛先・含めてよい情報を確認し、組織で承認された安全な手段を使ってください。パスワードやSMTP資格情報をバッチファイルに書かないでください。

従来のSystem.Net.Mail.SmtpClientによる簡易送信例を流用するのは避けてください。Microsoftも新規開発での使用を推奨していません。レポートには内部ネットワークや利用アプリの情報が含まれるため、未確認の内容をそのまま自動送信しない運用が重要です。出典:Microsoft:SmtpClient。

まとめ

PCの構成はsysteminfo、ネットワーク設定はipconfig /all、ディスク情報はCMDから呼び出すGet-CimInstance、最近のイベントは件数を絞ったwevtutilで確認できます。ソフトウェア一覧はレジストリの登録情報から取得し、網羅性の限界にも注意しましょう。

これらの出力は調査の材料であり、単独で性能や故障の原因を断定するものではありません。WMICや副作用のあるWin32_Productに依存せず、必要な情報だけを収集し、保存ファイルの上書きや共有時の情報漏えいに注意して活用してください。

この記事を書いた人

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

コメント

コメントする

目次