Blog Post

Get Drive Space Including Mount Points

,

Today’s post is a quick one that came out of a conversation on Twitter. To make a long story short, somebody was having trouble with mount points filling up because they were not being caught by their current monitoring script. I offered to look up how my monitoring was doing this and post it here.

After some digging through various VBScript files I was able to confirm that I use a WMI query of Win32_Volume. The query I have is in a highly custom script that does not lend itself to being understandable if taken out of context so I went ahead and converted the logic to PowerShell, then messed with it a bit to come up with something human readable. Here is that script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cls
[string] $serverName = 'localhost'

$vols = Get-WmiObject -computername $serverName -query "select Name, DriveType, FileSystem, FreeSpace, Capacity, Label from Win32_Volume where DriveType = 2 or DriveType = 3"

foreach($vol in $vols)
{

    [string] $driveType = switch ($vol.DriveType)

    {

        0 {'Unknown'}

        1 {'No Root Directory'}

        2 {'Removable Disk'}

        3 {'Local Disk'}

        4 {'Network Drive'}

        5 {'Compact Disk'}

        6 {'RAM Disk'}

        default {'unknown'}

    }

    [string] $drive = "Drive: {0}, {1}, {2}, {3}" -f $vol.name, $driveType, $vol.FileSystem, $vol.Label

    [string] $capacity = "Capacity: {0}GB" -f [System.Math]::Round(($vol.capacity / 1024 / 1024 / 1024), 0)

    [string] $freeSpace = "Free Space: {0}GB" -f [System.Math]::Round(($vol.FreeSpace / 1024 / 1024 / 1024), 0)

    Write-Output $drive

    Write-Output $capacity

    Write-Output $freeSpace

    Write-Output ""
}

So there is the code as promised. The next logical step would be to add a call inside the loop to insert this information into a table for trending and alerting.

Please do not run this on an important machine before reviewing it thuroughly. I offer no warranty beyond a sympathetic ear if this script breaks something.

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating