【PowerShell完全版】Windowsのドライブ容量を取得する方法まとめ

雑記

Cドライブ以外もOK|複数手法・関数化・用途別に徹底解説


Windowsの運用やスクリプト作成をしていると、

  • Cドライブだけでなく D や E も調べたい
  • 方法が多すぎて、どれを使うべきかわからない
  • 毎回コマンドを書くのが面倒なので関数化したい

と感じることは多いはずです。

本記事では
Windowsでドライブ容量を取得する代表的な方法をすべて整理し、
さらに「特定のドライブを指定して取得できる関数」まで解説
します。


そもそもドライブ容量はどこから取得できるのか?

PowerShellでは、目的に応じて複数の取得ルートがあります。

① Get-PSDrive     → ユーザー向け(簡単)
② Get-Volume      → ドライブ(正確)
③ Get-Disk        → 物理ディスク
④ Get-Partition   → パーティション

重要なのは
**「どの階層の情報が欲しいか」**です。


方法① Get-PSDrive(一番簡単)

全ドライブ容量を取得

Get-PSDrive -PSProvider FileSystem

特定ドライブ(C)だけ取得

Get-PSDrive C

特徴

  • 表示がわかりやすい
  • スクリプト初心者向け
  • 物理構成は見えない

方法② Get-Volume(ドライブレター基準で正確)

全ドライブ

Get-Volume

Cドライブのみ

Get-Volume -DriveLetter C

Size(総容量)だけ取得

(Get-Volume -DriveLetter C).Size

👉 ドライブ単位で容量を知りたいなら最も正確


方法③ Get-Disk / Get-Partition / Get-Volume(正規ルート)

全情報を一気に確認

Get-Disk | Get-Partition | Get-Volume

この方法は、

  • 物理ディスク
  • パーティション
  • ドライブレター

を正しく関連付けられる 運用・調査向けの王道ルートです。


Cドライブだけ Size を取得する基本形

(Get-Disk | Get-Partition | Get-Volume |
 Where-Object DriveLetter -eq 'C').Size

関数化① Cドライブ専用(GBで返す)

function Get-CDriveSizeGB {
    $v = Get-Disk | Get-Partition | Get-Volume |
         Where-Object DriveLetter -eq 'C'

    if (-not $v) {
        throw "Cドライブが見つかりません"
    }

    [math]::Round($v.Size / 1GB, 2)
}

関数化② 任意のドライブを指定できる汎用関数

ドライブレターを引数で指定

function Get-DriveSizeGB {
    param (
        [Parameter(Mandatory)]
        [ValidatePattern('^[A-Z]$')]
        [string]$DriveLetter
    )

    $volume = Get-Disk | Get-Partition | Get-Volume |
              Where-Object { $_.DriveLetter -eq $DriveLetter }

    if (-not $volume) {
        throw "ドライブ $DriveLetter が見つかりません"
    }

    [math]::Round($volume.Size / 1GB, 2)
}

使用例

Get-DriveSizeGB -DriveLetter C
Get-DriveSizeGB -DriveLetter D

出力例

476.94
931.51

関数化③ オブジェクトで返す(拡張・監視向け)

function Get-DriveInfo {
    param (
        [string]$DriveLetter
    )

    Get-Disk | Get-Partition | Get-Volume |
    Where-Object DriveLetter -eq $DriveLetter |
    Select-Object `
        DriveLetter,
        FileSystemLabel,
        @{Name="SizeGB";Expression={[math]::Round($_.Size/1GB,2)}},
        @{Name="FreeGB";Expression={[math]::Round($_.SizeRemaining/1GB,2)}}
}

どの方法を使うべき?用途別まとめ

用途おすすめ
さっと確認Get-PSDrive
正確な容量Get-Volume
構成調査Get-Disk + Get-Partition
スクリプト関数化(引数指定)
監視オブジェクト返却

実務でよくある判定例

if (Get-DriveSizeGB -DriveLetter C -lt 100) {
    Write-Warning "Cドライブ容量が100GB未満です"
}

まとめ

  • Windowsには 複数のドライブ容量取得方法がある
  • 用途によって「正解のコマンド」は違う
  • 実務では 関数化+ドライブ指定が最強
  • Get-Disk → Get-Partition → Get-Volume は覚えておくべき王道ルート

コメント

タイトルとURLをコピーしました