Tuesday 21 July 2015

Sending mail report of our computers and servers of theres hard disk

#############################################################################
#                                                                           #
#  Check disk space and send an HTML report as the body of an email.        #
#  Reports only disks on computers that have low disk space.                #
#  Author: Mike Carmody                                                     #
#  Some ideas extracted from Thiyagu's Exchange DiskspaceHTMLReport module.                                                          #
#  I have not added any error checking into this script yet.                #
#                                                                           #
#                                                                           #
#############################################################################
# Continue even if there are errors
$ErrorActionPreference = "Continue";

#########################################################################################
# Items to change to make it work for you.
#
# EMAIL PROPERTIES
#  - the $users that this report will be sent to.
#  - near the end of the script the smtpserver, From and Subject.

# REPORT PROPERTIES
#  - you can edit the report path and report name of the html file that is the report.
#########################################################################################

# Set your warning and critical thresholds
$percentWarning = 85;
$percentCritcal = 10;

# EMAIL PROPERTIES
    # Set the recipients of the report.
        $users = "users@mail.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 = "E:\Automation\scripts\";

    # 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 "E:\Automation\scripts\list.txt";   //list is for our computer name and sever name
#$computers = "C:\scripts\Diskspace_report\list.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
    }

# 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>Local Hosted 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 85% 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>"

# Send Notification if alert $i is greater then 0
if ($i -gt 0)
{
    foreach ($user in $users)
{
        Write-Host "Sending Email notification to $user"
       
        $smtpServer = "smtp.gmail.com"
        #$smtpport = "587"
        $username = "your@mail.com" 
        $password = "password"
        $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, 587);
        $smtp.EnableSSL = $true
        $smtp.credentials = New-Object System.Net.NetworkCredential($Username, $Password);
        $msg = New-Object Net.Mail.MailMessage
        $msg.To.Add($user)
        $msg.From = "your@mail.com"    //Sender Email ID
        $msg.Subject = "Local Environment DiskSpace Report for $titledate"
        $msg.IsBodyHTML = $true
        $msg.Body = get-content $diskReport
        $smtp.Send($msg)
        $body = ""
    }
  }
powershell set-ExecutionPolicy Restricted

exit

SAP HANA DB ANALYSIS AFTER ISSUES

To be able to further analyze your issue and environment please download the attached shell script you can get from KBA: 3218277 - Collectin...