Just what it says. This will email you when your drive space gets below the desired threshold.
function sendMail($srv, $DriveName, $free) { $subject = "Low Drive Space on $srv" $body = "<p style='font-family: calibri;'>The <B>$DriveName</B> on server <B>$srv</B> has only <B>$free % </B> free.<BR/> Please try to free up some space so it is above $percentThreshold% free space. </p>" # Init Mail address objects $emailFrom = New-Object system.net.Mail.MailAddress "donotreply@yourcomany.com" , "Low Drive Space on $srv" $emailTo = New-Object system.net.Mail.MailAddress $alertEmail , "Low Drive Space" $smtp = new-object Net.Mail.SmtpClient($mailServer) $MailMessage = new-object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $body) $MailMessage.IsBodyHtml = $true $smtp.Send($MailMessage) } function CheckDriveSpace($servername) { $drives = gwmi win32_logicaldisk -filter "drivetype=3" -ComputerName ($servername) -ErrorAction SilentlyContinue foreach($drive in $drives) { $PercentFree = [int]([Int64]$drive.FreeSpace / [Int64]($drive.Size) * 100) #SaveDriveinfo $ServerName $Drive.DeviceID $Drive.FreeSpace $drive.Size $PercentFree if($PercentFree -lt $percentThreshold) { sendMail $servername $drive.DeviceID $PercentFree } } } function Main() { try { $servers = Get-Content("C:\Servers.txt") foreach($server in $servers) { CheckDriveSpace $server } return 0; } catch { # Handle the error $err = $_.Exception write-host $err.Message while( $err.InnerException ) { $err = $err.InnerException write-output $err.Message } return 1; } } Clear-Host $percentThreshold = 15 $alertEmail = "dba@yourcompany.com" $mailServer = "mail.yourcompany.com" Main