Quantcast
Channel: Exchange Server 2010 forum
Viewing all articles
Browse latest Browse all 8820

Exchange 2010 Server up Time - Script - Help Needed

$
0
0

Hello Team

Iam managed to the get the below script from MS script repository. the script provide the output file with server name , IP address, Status,and Up time. but i need to modify the below script to provide the output file via email only if any one the servers in the list is not reachable, or request timed out. i don't want to provide the output file in each and eevry 5 min or an hour . Could you please someone help me 

http://gallery.technet.microsoft.com/scriptcenter/Get-Ping-status-along-with-bd579238

<######################################################################
#
# Author       : Bhavik Solanki
# Date         : 28th March 2012
# Version      : 1.0
# Desctiption  : This script will help to monitor Server availability.
#
######################################################################>
Function GetStatusCode

Param([int] $StatusCode)  
switch($StatusCode)
{
0 {"Success"}
11001   {"Buffer Too Small"}
11002   {"Destination Net Unreachable"}
11003   {"Destination Host Unreachable"}
11004   {"Destination Protocol Unreachable"}
11005   {"Destination Port Unreachable"}
11006   {"No Resources"}
11007   {"Bad Option"}
11008   {"Hardware Error"}
11009   {"Packet Too Big"}
11010   {"Request Timed Out"}
11011   {"Bad Request"}
11012   {"Bad Route"}
11013   {"TimeToLive Expired Transit"}
11014   {"TimeToLive Expired Reassembly"}
11015   {"Parameter Problem"}
11016   {"Source Quench"}
11017   {"Option Too Big"}
11018   {"Bad Destination"}
11032   {"Negotiating IPSEC"}
11050   {"General Failure"}
default {"Failed"}
}
}

Function GetUpTime
{
param([string] $LastBootTime)
$Uptime = (Get-Date) - [System.Management.ManagementDateTimeconverter]::ToDateTime($LastBootTime)
"Days: $($Uptime.Days); Hours: $($Uptime.Hours); Minutes: $($Uptime.Minutes); Seconds: $($Uptime.Seconds)" 
}

#Change value of the following parameter as needed
$OutputFile = "C:\Under Production\Server Up Time\Output.htm"
$ServerList = Get-Content "C:\Under Production\Server Up Time\msgServersList.txt"

$Result = @()
Foreach($ServerName in $ServerList)
{
$pingStatus = Get-WmiObject -Query "Select * from win32_PingStatus where Address='$ServerName'"

$Uptime = $null
if($pingStatus.StatusCode -eq 0)
{
$OperatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $ServerName -ErrorAction SilentlyContinue
$Uptime = GetUptime( $OperatingSystem.LastBootUpTime )
}

    $Result += New-Object PSObject -Property @{
   ServerName = $ServerName
IPV4Address = $pingStatus.IPV4Address
Status = GetStatusCode( $pingStatus.StatusCode )
Uptime = $Uptime
}
}

if($Result -ne $null)
{
$HTML = '<style type="text/css">
#Header{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;}
#Header td, #Header th {font-size:14px;border:1px solid #98bf21;padding:3px 7px 2px 7px;}
#Header th {font-size:14px;text-align:left;padding-padding-bottom:4px;background-color:#A7C942;color:#fff;}
#Header tr.alt td {color:#000;background-color:#EAF2D3;}
</Style>'

$HTML += "<HTML><BODY><Table border=1 cellpadding=0 cellspacing=0 id=Header>
<TR>
<TH><B>Server Name</B></TH>
<TH><B>IP Address</B></TD>
<TH><B>Status</B></TH>
<TH><B>Uptime</B></TH>
</TR>"
    Foreach($Entry in $Result)
    {
        if($Entry.Status -ne "Success")
{
$HTML += "<TR bgColor=Red>"
}
else
{
$HTML += "<TR>"
}
$HTML += "
<TD>$($Entry.ServerName)</TD>
<TD>$($Entry.IPV4Address)</TD>
<TD>$($Entry.Status)</TD>
<TD>$($Entry.Uptime)</TD>
</TR>"
    }
    $HTML += "</Table></BODY></HTML>"

$HTML | Out-File $OutputFile
}


Viewing all articles
Browse latest Browse all 8820

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>