Here is an example function to return free space remaining on a volume with associated details. Updated 27/04/2012 to fix mount points.
Usage Examples:
Get-VolumeFreeSpace|ft
Get-VolumeFreeSpace|Select ComputerName,Name,MountPoint,FreeSpaceGiB|ft
Get-VolumeFreeSpace|Where-Object {!$_.SystemVolume}|Select ComputerName,Name,MountPoint,FreeSpaceGiB|ft
Get-VolumeFreeSpace “ComputerA”,”ComputerB” |ft
#http://jongurgul.com/blog/get-volumefreespace/ Function Get-VolumeFreeSpace{ Param([String[]]$Computers) If (!$Computers) {$Computers = $ENV:ComputerName} $Base = New-Object PSObject; $Base | Add-Member Noteproperty ComputerName -Value $Null; $Base | Add-Member Noteproperty DeviceID -Value $Null; $Base | Add-Member Noteproperty SystemVolume -Value $Null; $Base | Add-Member Noteproperty DriveType -Value $Null; $Base | Add-Member Noteproperty Name -Value $Null; $Base | Add-Member Noteproperty MountPoint -Value $Null; $Base | Add-Member Noteproperty FreeSpaceGiB -Value $Null; $Results = New-Object System.Collections.Generic.List[System.Object]; ForEach ($Computer in $Computers){ $Volume = Get-WmiObject -Class "Win32_Volume" -ComputerName $Computer; $MountPoint = Get-WmiObject -Class "Win32_MountPoint" -ComputerName $Computer | Select @{Name="DeviceID";Expression={$_.Volume.ToString().Substring($_.Volume.ToString().IndexOf("`"")).Replace("`"","").Replace("\\","\")}},@{Name="MountPoint";Expression={$_.Directory.ToString().Substring($_.Volume.ToString().IndexOf("`"")).Replace("`"","").Replace("\\","\")}}; [String[]]$Mounts = $MountPoint|%{$_.DeviceID} $Volume |%{ $Entry = $Base | Select-Object * $Entry.ComputerName = $Computer; $Entry.DeviceID = $_.DeviceID; $Entry.SystemVolume = $_.SystemVolume; $Entry.DriveType = $_.DriveType; $Entry.Name = $_.Name; $Entry.FreeSpaceGiB = [Math]::Round($_.FreeSpace/1GB,3); $DeviceID = $_.DeviceID; $MountPoint| Where-Object{$DeviceID -contains $_.DeviceID}|%{ $Local = $Entry | Select-Object * $Local.MountPoint = $_.MountPoint; [Void]$Results.Add($Local); }; $_|Where-Object{$Mounts -notcontains $_.DeviceID}|%{[Void]$Results.Add($Entry);}; } } $Results }
Leave a Reply