Wednesday, March 1, 2017

Disk space script

# Set your warning and critical thresholds for free space in terms of percentage
$percentWarning = 15;
$percentCritcal = 10;

# EMAIL PROPERTIES
 # Set the recipients of the report.
  #$users = "YourDistrolist@company.com"
    #$users = "You@company.com" # I use this for testing by uing my email address.
  #$users = "you@company.com", "manager@company.com", "etc@company.com";  # can be sent to individuals.


# REPORT PROPERTIES
 # Path to the report
  $reportPath = "C:\Scripts\DVCI\disk\";

 # Report name
  $reportName = "DiskSpaceRpt_$(get-date -format ddMMyyyy).html";

# Path and Report name together
$diskReport = $reportPath + $reportName

#Set colors for table cell backgrounds
$redColor = "#FF0000"
$orangeColor = "#FBB917"
$whiteColor = "#FFFFFF"

# Count if any computers have low disk space.  Do not send report if less than 1.
$i = 0;

# Get computer list to check disk space
$computers = Get-Content "serverlist.txt";
$datetime = Get-Date -Format "MM-dd-yyyy_HHmmss";

# Remove the report if it has already been run today so it does not append to the existing report
 # If (Test-Path $diskReport)
   #   {
     #   Remove-Item $diskReport
         Remove-Item "C:\Scripts\DVCI\disk\Samsndiskreport.html"
    #  }

# Cleanup old files..
##$Daysback = "-7"
##$CurrentDate = Get-Date;
##$DateToDelete = $CurrentDate.AddDays($Daysback);
##Get-ChildItem $reportPath | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item;

# Create and write HTML Header of report
$titleDate = get-date -uformat "%m-%d-%Y - %A"
$header = "
  <html>
  <head>
  <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
  <title>DiskSpace Report</title>
  <STYLE TYPE='text/css'>
  <!--
  td {
   font-family: Tahoma;
   font-size: 11px;
   border-top: 1px solid #999999;
   border-right: 1px solid #999999;
   border-bottom: 1px solid #999999;
   border-left: 1px solid #999999;
   padding-top: 0px;
   padding-right: 0px;
   padding-bottom: 0px;
   padding-left: 0px;
  }
  body {
   margin-left: 5px;
   margin-top: 5px;
   margin-right: 0px;
   margin-bottom: 10px;
   table {
   border: thin solid #000000;
  }
  -->
  </style>
  </head>
  <body>
  <table width='100%'>
  <tr bgcolor='#CCCCCC'>
  <td colspan='7' height='25' align='center'>
  <font face='tahoma' color='#003399' size='4'><strong>ASTRO Environment DiskSpace Report for $titledate</strong></font>
  </td>
  </tr>
  </table>
"
 Add-Content $diskReport $header

# Create and write Table header for report
 $tableHeader = "
 <table width='100%'><tbody>
 <tr bgcolor=#CCCCCC>
    <td width='10%' align='center'>Server</td>
 <td width='5%' align='center'>Drive</td>
 <td width='15%' align='center'>Drive Label</td>
 <td width='10%' align='center'>Total Capacity(GB)</td>
 <td width='10%' align='center'>Used Capacity(GB)</td>
 <td width='10%' align='center'>Free Space(GB)</td>
 <td width='5%' align='center'>Freespace %</td>
 </tr>
"
Add-Content $diskReport $tableHeader
 
# Start processing disk space reports against a list of servers
  foreach($computer in $computers)
 { 
 $disks = Get-WmiObject -ComputerName $computer -Class Win32_LogicalDisk -Filter "DriveType = 3"
 $computer = $computer.toupper()
  foreach($disk in $disks)
 {        
  $deviceID = $disk.DeviceID;
        $volName = $disk.VolumeName;
  [float]$size = $disk.Size;
  [float]$freespace = $disk.FreeSpace; 
  $percentFree = [Math]::Round(($freespace / $size) * 100, 2);
  $sizeGB = [Math]::Round($size / 1073741824, 2);
  $freeSpaceGB = [Math]::Round($freespace / 1073741824, 2);
        $usedSpaceGB = $sizeGB - $freeSpaceGB;
        $color = $whiteColor;

# Set background color to Orange if just a warning
 if($percentFree -lt $percentWarning)      
  {
    $color = $orangeColor 

# Set background color to Orange if space is Critical
      if($percentFree -lt $percentCritcal)
        {
        $color = $redColor
       }        
 
 # Create table data rows 
    $dataRow = "
  <tr>
        <td width='10%'>$computer</td>
  <td width='5%' align='center'>$deviceID</td>
  <td width='15%' >$volName</td>
  <td width='10%' align='center'>$sizeGB</td>
  <td width='10%' align='center'>$usedSpaceGB</td>
  <td width='10%' align='center'>$freeSpaceGB</td>
  <td width='5%' bgcolor=`'$color`' align='center'>$percentFree</td>
  </tr>
"
Add-Content $diskReport $dataRow;
Write-Host -ForegroundColor DarkYellow "$computer $deviceID percentage free space = $percentFree";
    $i++  
  }
 }
}

# Create table at end of report showing legend of colors for the critical and warning
 $tableDescription = "
 </table><br><table width='20%'>
 <tr bgcolor='White'>
    <td width='10%' align='center' bgcolor='#FBB917'>Warning less than 15% free space</td>
 <td width='10%' align='center' bgcolor='#FF0000'>Critical less than 10% free space</td>
 </tr>
"
  Add-Content $diskReport $tableDescription
 Add-Content $diskReport "</body></html>"


rename-item $diskreport "C:\Scripts\DVCI\disk\Samsondiskreport.html"
#copy-item $diskreport -destination "C:\Scripts\DVCI\disk\"

copy-item "C:\Scripts\DVCI\disk\Samsondiskreport.html" -destination "c:\Inetpub\wwwroot\reports\"

No comments:

Post a Comment