# encoding: ascii
# api: powershell
# title: unix df -h analog
# description: Prints “human-readable” information for specified drive
# version: 0.1
# type: function
# author: greg zakharov
# license: CC0
# function: Get-DriveFormatData
# x-poshcode-id: 4581
# x-archived: 2013-11-06T02:14:39
# x-published: 2013-11-05T08:12:00
#
#
function Get-DriveFormatData {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true,
ValueFromPipeline=$true)]
[ValidatePattern("[a-z]")]
[Char]$DriveLetter
)
begin {
function vol([Char]$dl) {
try {
$rk = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\MountedDevices')
$rk.GetValueNames() | % {$hash = @{}}{
$hash[$_] = [String]$rk.GetValue($_) -replace ' ', ''
}{
($hash.GetEnumerator() | ? {$_.Value -eq $hash[('\DosDevices\' + $dl + ':')]}) | % {
if ($_.Name -notmatch 'Dos') {$_.Name}
}
}
}
finally {
if ($rk -ne $null) {$rk.Close()}
}
}
}
process {
[IO.DriveInfo]::GetDrives() | % {$arr = @()}{
$str = "" | select Drive, FileSystem, Size, Used, Avail, Use, Mounted, Label
if ($_.Name -eq ($DriveLetter + ':\') -and $_.IsReady) {
$str.Drive = $_.Name
$str.FileSystem = $_.DriveFormat
$str.Size = ("{0}Gb" -f [Math]::Round($_.TotalSize / 1Gb))
$str.Used = ("{0:F2}Gb" -f (($_.TotalSize - $_.TotalFreeSpace) / 1Gb))
$str.Avail = ("{0:F2}Gb" -f ($_.TotalFreeSpace / 1Gb))
$str.Use = ("{0:F2}%" -f (($_.TotalSize - $_.TotalFreeSpace) * 100 / $_.TotalSize))
$str.Mounted = (vol $_.Name[0])
$str.Label = $_.VolumeLabel
$arr += $str
}
}
}
end {
$arr | ft -a
}
}