Friday, August 19, 2016

PowerShell - Drive size and free space

$servers = @("server1", "server2")
$myDrives = @()

Get-WmiObject Win32_Volume -ComputerName $servers -credential domain\username | ForEach-Object {

    $drive = $_

    $item = [PSCustomObject] @{

        Server = $drive.SystemName
        Name = $drive.Name
        DeviceType = switch ($drive.DriveType)
        {

            0 {"Unknown"}
            1 {"No Root Directory"}
            2 {"Removable Disk"}
            3 {"Local Disk"}
            4 {"Network Drive"}
            5 {"Compact Disk"}
            6 {"RAM"}
        }
        SizeGB = "{0:N2}" -f ($drive.Capacity/1GB)
        FreeSpaceGB = "{0:N2}" -f ($drive.FreeSpace/1GB)

    }

    # I only want to look at local disks (DriveType 3)
    # I also want to weed out tiny boot drives less than 1 GB

    if (($drive.DriveType -eq 3 ) -and ($drive.Capacity -gt 1000000000) )
    {
        $myDrives += $item
    }



}

# Dashes
Write-Host $('-' * 70)

$myDrives | Format-Table -AutoSize