物理ドライブの使用領域を取得するWindows PowerShellスクリプト
サーバー管理や企業内のポリシー運用などでサーバーのディスク容量を記録しておく場合がある。そんなときに、エクスプローラーを起動し個々のドライブを見ていくのは手間がかかる。Windows PowerShellでスクリプトを組んでしまえば、実行するだけで取得できるようになるので手間が省ける。定期的に行う作業は可能な限り自動化するのが効率化を図る上で重要になってくる。
このコードでは結果を画面に表示しているが、必要に応じてファイルに書き込むように設定しておくと他のシステムとの連携にも使える。
# 物理ドライブの容量を取得
$disks = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3 }
foreach ($disk in $disks)
{
[double]$parcentUsedSize = 0
[double]$parcentSize = 0
[double]$percentFreeSpace = 0
# ドライブID
Write-Host "ドライブ :" $disk.DeviceID
# 使用領域
$usedSize = [long]$disk.Size - [long]$disk.FreeSpace
$displayUsedSize = [System.Math]::Floor([double](($usedSize / 1GB)) * 10) / 10
if ($displayUsedSize -ge 100)
{
$parcentUsedSize = ("{0:N0}" -f $displayUsedSize)
Write-Host "使用領域 :" ("{0:N0}" -f $displayUsedSize) "GB"
}
elseif ($displayUsedSize -lt 100 -and $displayUsedSize -ge 10)
{
$parcentUsedSize = ("{0:N1}" -f $displayUsedSize)
Write-Host "使用領域 :" ("{0:N1}" -f $displayUsedSize) "GB"
}
else
{
$parcentUsedSize = ("{0:N2}" -f $displayUsedSize)
Write-Host "使用領域 :" ("{0:N2}" -f $displayUsedSize) "GB"
}
# 空き領域
$displayFreeSpace = [System.Math]::Floor([double](($disk.FreeSpace / 1GB)) * 10) / 10
if ($displayFreeSpace -ge 100)
{
Write-Host "空き領域 :" ("{0:N0}" -f $displayFreeSpace) "GB"
}
elseif ($displayFreeSpace -lt 100 -and $displayFreeSpace -ge 10)
{
Write-Host "空き領域 :" ("{0:N1}" -f $displayFreeSpace) "GB"
}
else
{
Write-Host "空き領域 :" ("{0:N2}" -f $displayFreeSpace) "GB"
}
# 容量
$displaySize = [System.Math]::Floor([double](($disk.Size / 1GB)) * 10) / 10
if ($displaySize -ge 100)
{
$parcentSize = ("{0:N0}" -f $displaySize)
Write-Host "容量 :" ("{0:N0}" -f $displaySize) "GB"
}
elseif ($displaySize -lt 100 -and $displaySize -ge 10)
{
$parcentSize = ("{0:N1}" -f $displaySize)
Write-Host "容量 :" ("{0:N1}" -f $displaySize) "GB"
}
else
{
$parcentSize = ("{0:N2}" -f $displaySize)
Write-Host "容量 :" ("{0:N2}" -f $displaySize) "GB"
}
# 使用割合
$percentFreeSpace = $parcentUsedSize / $parcentSize * 100
if ($percentFreeSpace -ge 100)
{
Write-Host "使用割合 :" ("{0:N0}" -f $percentFreeSpace) "%"
}
elseif ($percentFreeSpace -lt 100 -and $percentFreeSpace -ge 10)
{
Write-Host "使用割合 :" ("{0:N1}" -f $percentFreeSpace) "%"
}
else
{
Write-Host "使用割合 :" ("{0:N2}" -f $percentFreeSpace) "%"
}
Write-Host
}