I have a script that I run daily using a scheduled task that goes through each of my servers and e-mails me the disk space results. However, one of my servers is now using mount points and I want to be able to include these in the results.
I am fairly new to Powershell and I would like to know what to add and where to achieve this result.
Here is the code:
# Configuration data. # Add your machine names to check for to the list: [String[]] $servers = @("Server names here"); [float] $levelWarn = 20.0; [float] $levelAlarm = 10.0; [string] $smtpServer = "SMTP Server"; [string] $sender = "Email Address"; [string] $receiver = "Email Address"; [string] $subject = "US Disk usage report"; [bool] $asHtml = $true; [string] $body = [String]::Empty; if ($asHtml) { $body += "<head><title>Disk usage report</title><style> .table {border-collapse: collapse; border: 1px solid #808080;} .paragraph {font-family: Arial;font-size:large;text-align: left;border} .boldLeft {font-family: Arial;font-size:large;text-align: left;border: 1px solid #808080;} .boldRight {font-family: Arial;font-size:large;text-align: right;border: 1px solid #808080;} .smallLeft {font-family: Arial;text-align: left;border: 1px solid #808080;} .smallRight {font-family: Arial;text-align: right;border: 1px solid #808080;} </style></head><body>"; } else { $body += "Disk usage report`n`n"; } Clear-Host; Write-Host "Started"; ### Functions. function getTextTableHeader { [String] $textHeader = [String]::Empty; $textHeader += "Drv "; $textHeader += "Vol Name "; $textHeader += " Size MB "; $textHeader += " Free MB "; $textHeader += " Free % "; $textHeader += "Message `n"; $textHeader += "--- "; $textHeader += "--------------- "; $textHeader += "------------ "; $textHeader += "------------ "; $textHeader += "---------- "; $textHeader += "------------ `n"; return $textHeader; } function getTextTableRow { param([object[]] $rowData) [String] $textRow = [String]::Empty; $textRow += $rowData[0].ToString().PadRight(4); $textRow += $rowData[1].ToString().PadRight(16); $textRow += $rowData[2].ToString("N0").PadLeft(12) + " "; $textRow += $rowData[3].ToString("N0").PadLeft(12) + " "; $textRow += $rowData[4].ToString("N1").PadLeft(10) + " "; $textRow += $rowData[5].ToString().PadRight(13); return $textRow; } function getHtmlTableHeader { [String] $header = [String]::Empty; $header += "<table style=""width: 100%"" class=""table""><tr class=""boldLeft""> <th class=""boldLeft"">Drv</th> <th class=""boldLeft"">Vol Name</th> <th class=""boldRight"">Size MB</th> <th class=""boldRight"">Free MB</th> <th class=""boldRight"">Free %</th> <th class=""boldLeft"">Message</th></tr>"; return $header; } function getHtmlTableRow { param([object[]] $rowData) [String] $textRow = [String]::Empty; $textRow += "<tr class=""smallLeft""> <td class=""smallLeft"">" + $rowData[0].ToString() + "</td> <td class=""smallLeft"">" + $rowData[1].ToString() + "</td> <td class=""smallRight"">" + $rowData[2].ToString("N0") + "</td> <td class=""smallRight"">" + $rowData[3].ToString("N0") + "</td> <td class=""smallRight"">" + $rowData[4].ToString("N1") + "</td> <td class=""smallLeft"">" + $rowData[5].ToString() + "</td></tr>"; return $textRow; } foreach($server in $servers) { $disks = Get-WmiObject -ComputerName $server -Class Win32_LogicalDisk -Filter "DriveType = 3"; if ($asHtml) { $body += ("<p class=""paragraph"">Server: {0}`tDrives #: {1}</p>`n" -f $server, $disks.Count); $body += getHtmlTableHeader; } else { $body += ("Server: {0}`tDrives #: {1}`n" -f $server, $disks.Count); $body += getTextTableHeader; } foreach ($disk in $disks) { [String] $message = [String]::Empty; if (100.0 * $disk.FreeSpace / $disk.Size -le $levelAlarm) { $message = "Alarm !!!"; } elseif (100.0 * $disk.FreeSpace / $disk.Size -le $levelWarn) { $message = "Warning !"; } [Object[]] $data = @($disk.DeviceID, $disk.VolumeName, [Math]::Round(($disk.Size / 1048576), 0), [Math]::Round(($disk.FreeSpace / 1048576), 0), ` [Math]::Round((100.0 * $disk.FreeSpace / $disk.Size), 1), $message) if ($asHtml) { $body += getHtmlTableRow -rowData $data; } else { $body += getTextTableRow -rowData $data; } $body += "`n"; } if ($asHtml) { $body += "</table>`n"; } else { $body += "`n"; } } if ($asHtml) { $body += "</body>"; } # Init Mail address objects $smtpClient = New-Object Net.Mail.SmtpClient($smtpServer); $emailFrom = New-Object Net.Mail.MailAddress $sender, $sender; $emailTo = New-Object Net.Mail.MailAddress $receiver , $receiver; $mailMsg = New-Object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $body); $mailMsg.IsBodyHtml = $asHtml; $smtpClient.Send($mailMsg) Write-Host "Finished";
Thanks,