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は覚えておくべき王道ルート

コメント