WindowsPCの設定・環境情報を収集するコマンド集

PCの設定や環境情報を収集するとき、皆さんはどのような方法を使っていますか?

専用のソフトウェアを利用する方法もありますが、

「できるだけ費用をかけずに情報を収集したい」

「よく分からないフリーソフトをインストールしたくない」

「複数台のPCから同じ情報を収集したい」

といった場面もあると思います。

実は、WindowsにはPCのさまざまな情報を確認・収集するためのコマンドが標準で用意されています。

そのため、情報収集のためだけに新しいソフトウェアを導入したり、高額な製品を契約したりする必要はありません。

本記事では、Windowsに標準搭載されているコマンドを使って、PCの設定・環境情報を収集する方法を紹介します。

例えば、以下のような情報をコマンドから取得できます。

  • PC名
  • Windowsのバージョン
  • IPアドレス
  • MACアドレス
  • ディスク容量・空き容量
  • プリンター情報
  • ネットワーク情報
  • インストールされているソフトウェア
  • その他、PCの構成・設定情報

基本的にはコマンドを入力するだけで確認できるため、特別なソフトウェアを用意する必要はありません。

また、取得した情報は、PCの資産管理や端末展開、故障対応、設定確認などにも活用できます。

「このPCの情報を確認したいけど、何のコマンドを使えばいいか分からない」というときに、すぐ使えるコマンド集として活用してもらえればと思います。

目次

設定・環境情報を収集するコマンド集

本記事では、以下の情報を収集する際に役立つコマンドを紹介していきます。

  • 端末名(ホスト名)
  • 機種名(型番)
  • IPアドレス
  • MACアドレス
  • ディスク容量
  • 通常使うプリンタ
  • プリンタ名,ドライバ,使用ポート情報
  • インストール済みソフトウェア
  • ドメイン情報
  • OSライセンス認証状況
  • Windowsのバージョン
  • デスクトップ上のファイル・フォルダ

では、それぞれ解説していきます。

端末名(ホスト名)

端末名を収集するのに一番手っ取り早いのは以下のコマンドです。

BAT (Batchfile)
hostname

別のコマンドとしてechoコマンドでも収集可能です。

BAT (Batchfile)
echo %computername%

また、以下のコマンドでも収集できます。

BAT (Batchfile)
systeminfo

だた、端末名以外も表示されるため、端末名のみ表示させたい場合は以下のコマンドを入力してみてください。

BAT (Batchfile)
systeminfo | findstr /C:"ホスト名:"

機種名(型番)

機種名を収集するには以下のコマンドを入力します。

BAT (Batchfile)
systeminfo

いくつか情報が表示されますが「システム製造元」と「システムモデル」がそれに該当します。

「システム製造元」と「システムモデル」のみ表示させたい場合は、以下のコマンドを入力します。

BAT (Batchfile)
systeminfo | findstr /C:"システム製造元" /C:"システム モデル"

他に絞り込みたい情報があれば/C:""を追記することで可能なので、せひ試してみてください。

IPアドレス

IPアドレスを手早く収集するには以下のコマンドを入力します。

BAT (Batchfile)
ipconfig

MACアドレスなど、より詳細な情報も収集したい場合は以下のコマンドです。

BAT (Batchfile)
ipconfig /all

ipconfigの弱点として、ネットワークに接続しているアダプタのIPアドレスしか収集できない点が挙げられます。

そこで、ネットワークに接続していないアダプタでもIPアドレスを取得できるように対応したものが以下のコマンドになります。

PowerShell
Get-NetIPAddress -AddressFamily IPv4 |
    Where-Object {$_.InterfaceAlias -match 'イーサネット|Wi-Fi'} |
    Select-Object InterfaceAlias, IPAddress |
    Format-Table -AutoSize

MACアドレス

IPアドレスでも紹介しましたが、MACアドレスを収集したい場合は以下のコマンドになります。

BAT (Batchfile)
ipconfig /all

しかし、上記コマンドでは、MACアドレス以外にも、さまざまな情報が収集されます。

「アダプタ名・MACアドレス・IPv4アドレス」のみ取得したい場合は以下のコマンドが有効です。

BAT (Batchfile)
ipconfig /all | findstr /C:"説明" /C:"物理アドレス" /C:"IPv4 アドレス"

ただ、上記コマンドでは行間もなく若干の見にくさはあります。

きれいに表形式で表示させたい場合は以下のコマンドが有効です。

PowerShell
Get-NetAdapter | ForEach-Object {
    $ip = Get-NetIPAddress -InterfaceIndex $_.ifIndex -AddressFamily IPv4 -ErrorAction SilentlyContinue

    [PSCustomObject]@{
        説明       = $_.InterfaceDescription
        物理アドレス = $_.MacAddress
        IPv4       = $ip.IPAddress
    }
}

ディスク容量

「ディスクの全体容量・使用済み容量・空き容量・使用済み容量の割合」を収集したい場合は若干複雑になりますが、以下のコマンドで収集可能です。

PowerShell
Get-CimInstance Win32_LogicalDisk |
    Where-Object DriveType -eq 3 |
    Select-Object `
        @{Name="Drive";Expression={$_.DeviceID}},
        @{Name="Total";Expression={"{0:N1} GB" -f ($_.Size / 1GB)}},
        @{Name="Used";Expression={"{0:N1} GB" -f (($_.Size - $_.FreeSpace) / 1GB)}},
        @{Name="Free";Expression={"{0:N1} GB" -f ($_.FreeSpace / 1GB)}},
        @{Name="Used%";Expression={"{0:N1}%" -f ((($_.Size - $_.FreeSpace) / $_.Size) * 100)}} |
    Format-Table -AutoSize

実行結果としては以下のようになります。

通常使うプリンタ

通常使うプリンタに設定されているプリンタ名を収取したい場合は、以下のコマンドが有効です。

BAT (Batchfile)
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -g

ただし、上記コマンドはプリンタ名のみで、ドライバ名や使用しているポート名、ポートのIPアドレスまでは収集できません。

解決策として、若干複雑になるものの、以下のコマンドで収集できます。

PowerShell
Get-CimInstance Win32_Printer |
    Where-Object { $_.Default -eq $true } |
    ForEach-Object {
        $printer = $_
        $port = Get-PrinterPort -Name $printer.PortName -ErrorAction SilentlyContinue

        [PSCustomObject]@{
            PrinterName = $printer.Name
            DriverName  = $printer.DriverName
            PortName    = $printer.PortName
            IPAddress   = $port.PrinterHostAddress
        }
    } |
    Format-Table -AutoSize

実行結果としては以下の通りです。

プリンタ名,ドライバ名,使用ポート名

PCに設定されているプリンタ名、各プリンタのドライバ名、各プリンタで使用しているポート名を収取したい場合は以下のコマンドが有効です。

BAT (Batchfile)
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -l

上記コマンドにてプリンタの状態なども収集することは可能ですが、プリンタ名、ドライバ名、ポート名に絞って取得したい場合は以下のコマンドになります。

BAT (Batchfile)
cscript C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -l | findstr /C:"プリンター名" /C:"ドライバー名" /C:"ポート名"

ただし、上記コマンドでは、使用しているポートのIPアドレスまでは収集できません。

複雑にはなりますが、以下のコマンドでポートのIPアドレスについても収集ができます。

PowerShell
$lines = cscript.exe //nologo C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnmngr.vbs -l

$result = @()
$current = @{}

foreach ($line in $lines) {

    if ($line -match '^プリンター名\s+(.+)$') {
        $current["プリンター名"] = $matches[1].Trim()
    }
    elseif ($line -match '^ドライバー名\s+(.+)$') {
        $current["ドライバー名"] = $matches[1].Trim()
    }
    elseif ($line -match '^ポート名\s+(.+)$') {
        $current["ポート名"] = $matches[1].Trim()

        # ポート名からIPアドレスを取得
        $port = Get-CimInstance Win32_TCPIPPrinterPort -Filter "Name='$($current["ポート名"])'" -ErrorAction SilentlyContinue

        if ($port) {
            $ip = $port.HostAddress
        }
        else {
            $ip = "-"
        }

        $result += [PSCustomObject]@{
            "プリンター名" = $current["プリンター名"]
            "ドライバー名" = $current["ドライバー名"]
            "ポート名"     = $current["ポート名"]
            "IPアドレス"   = $ip
        }

        $current = @{}
    }
}

$result | Format-Table -AutoSize

実行結果としては以下の通りです

インストール済みソフトウェア

PCにインストールされているソフトウェアを収集したい場合、Windows11であれば以下のコマンドで容易に確認できます。

BAT (Batchfile)
winget list --source winget

ただしwingetが管理していないソフトウェアも中には存在します。

以下のコマンドであればすべて取得できるので試してみてください。

PowerShell
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
                 "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" |
    Where-Object {$_.DisplayName} |
    Select-Object DisplayName, DisplayVersion, Publisher, InstallDate

ドメイン情報

PCがどのドメインに参加しているかを確認するには、以下のコマンドにおける「ドメイン」の部分になります。

BAT (Batchfile)
systeminfo

ドメイン情報のみに絞り込んで収取したい場合は以下のコマンドになります。

BAT (Batchfile)
systeminfo | findstr /C:"ドメイン:"

OSライセンス認証状況

OSのライセンスが認証されているかどうかを確認するには以下のコマンドが有効です。

BAT (Batchfile)
cscript "C:\Windows\System32\slmgr.vbs" /dli

ライセンス認証がされていれば、以下のように「ライセンスされています」と表示されます。

Windowsのバージョン

PCにインストールされているWindowsのバージョンを収集するには以下のコマンドになります。

BAT (Batchfile)
systeminfo

他の情報が不要な場合は以下のコマンドが有効です。

BAT (Batchfile)
systeminfo | findstr /B /C:"OS 名" /C:"OS バージョン"

また、PowerShellでも収集が可能です。

PowerShell
Get-ComputerInfo

絞り込んで収集したい場合は以下のコマンドを入力してみてください。

PowerShell
Get-ComputerInfo | Select-Object OsName, OSDisplayVersion, OsBuildNumber

実行結果としては以下のようになります。

デスクトップ上のファイル・フォルダ

デスクトップ上に存在するファイルやフォルダのフルパスを一括で収集するには、以下のコマンドが有効です。

BAT (Batchfile)
dir /s /b C:\Users\%username%\Desktop

上記コマンドはフルパスで表示されますが、フルパスではなくファイル名やフォルダ名のみ収集したい場合は、以下のコマンドが有効です。

PowerShell
Get-ChildItem -LiteralPath 'C:\Users\%username%\デスクトップ' -Recurse -File |
    ForEach-Object { $_.FullName.Substring('C:\Users\%username%\デスクトップ'.Length + 1) }

設定・環境情報を一括で収集する方法

用途に合わせてそれぞれコマンドを紹介しましたが、いくつかの情報を収集したい場合、一つひとつ入力する手間が発生します。

そのように、いくつかの情報をまとめて収集したい場合は、紹介したコマンドをまとめて一つのBatファイルにすることでできます。

参考までに、まとめて一つのBatファイルにしたものは以下からダウンロード可能なので、ぜひダウンロードしてみてください(無料です)

まとめ

今回は、Windowsに標準搭載されているコマンドを使い、PCの設定・環境情報を収集する方法を紹介しました。

PCの情報を確認するために、必ずしも専用のソフトウェアを導入する必要はありません。

今回紹介したように、コマンドを実行するだけで、以下のようなさまざまな情報を取得できます。

  • PC名
  • Windowsのバージョン
  • IPアドレス・MACアドレス
  • ディスク容量
  • インストール済みソフトウェア
  • プリンター情報

特に、複数台のPCを管理する場合や、PCの資産管理・端末展開・トラブル対応などで情報を確認したい場合には、こうしたコマンドを覚えておくと便利です。

また、Windows標準の機能を利用するため、情報収集のためだけに新しいソフトウェアをインストールする必要もありません。

「このPCの情報を確認したいけど、どうやって調べればいい?」

そんなときに、本記事のコマンドを参考にしてもらえればと思います。


WinDeployAutoでは、Windowsのセットアップや定型業務の自動化・効率化をテーマに、Bat・PowerShell・Python などを活用した仕組みづくりを行っています。

  • Windowsセットアップを自動化したい
  • 繰り返し作業を効率化したい
  • 現場の運用負荷を減らしたい

このようなお悩みがありましたら、ぜひお問い合わせフォームよりお問い合わせください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

システムエンジニアとしてWindows構築や業務自動化に携わってきました。
PowerShellやPython、AIを活用し、現場の課題を解決することが得意です。
「面倒な作業をなくしたい」「もっと効率化したい」そんな想いを形にします。

コメント

コメントする

目次