Here is the script to check Disk Space of multiple servers:

The output is a html file in table format. This script also highlights if free space % is less than threshold.

$servers = Get-Content servers.txt;
$output_file = "DriveSpaceReport" + (get-date -UFormat "-%Y-%m-%d-%H_%M") + ".html";
Add-Content $output_file "<html><head><title>Drive Space Report</title><style>table { border-collapse: collapse;} table, td, th { border: 1px solid black;} </style></head><body>";
Add-Content $output_file ("Report Started at: " + (Get-Date));
Add-Content $output_file "<table border='1'><tr><th>DeviceID</th><th>Size (GB)</th><th>FreeSpace (GB)</th><th>FreeSpace %</th></tr>";
foreach($server in $servers)
{
    Add-Content $output_file ("<tr><td colspan='4'>" + $server + "</td></tr>");
    
    $drivesinfo = Get-WmiObject win32_logicaldisk -ComputerName $server | Where-Object {$_.DriveType -eq 3};
    foreach($driveinfo in $drivesinfo)
    {
        if(($driveinfo.FreeSpace/$driveinfo.Size)*100 -lt 10)
        { $option = "<td bgcolor='Red'>"; }
        elseif(($driveinfo.FreeSpace/$driveinfo.Size)*100 -lt 20)
        { $option = "<td bgcolor='Yellow'>"; }
        else {$option = "<td>"};
        Add-Content $output_file ("<tr><td> " + $driveinfo.DeviceId + "</td><td>" + [Math]::Round($driveinfo.Size/1GB, 2) + "</td><td>" + [Math]::Round($driveinfo.FreeSpace/1GB, 2) + "</td>"+ $option + [Math]::Round(($driveinfo.FreeSpace/$driveinfo.Size)*100, 2) + "</td></tr>");
    }
}
Add-Content $output_file "<br/><br/>";
Add-Content $output_file ("</table><br/><br/>Report Completed at: " + (Get-Date) + "</body></html>");
Invoke-Item $output_file;

The HTML output is as follows:

Disk Space Report Started at: 07/10/2018 23:45:49

DeviceIDSize (GB)FreeSpace (GB)FreeSpace %
dc01
C:59.6649.1482.36
srv01
C:59.6649.6483.2
E:20.157.63

Report Completed at: 07/10/2018 23:45:49 

This script reads a .txt file for the list of servers. Save the list of servers one server per line to servers.txt and keep it in the same folder.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Post comment