if ((Get-PSSnapin "Citrix.XenApp.Commands" -EA silentlycontinue) -eq $null) {
try { Add-PSSnapin Citrix.XenApp.Commands -ErrorAction Stop }
catch { write-error "Error loading XenApp Powershell snapin"; Return }
}
##############################################################################################
$email = "" | Select Host,From,To,Subject,Body,Attachment
$alertFilename="C:\scripts\Prod_monitor\astro_mon.htm"
$emailSubject="AUS - CITRIX SERVERS REPORT"
$emailFrom = "AProdCitrix@amds.com"
$emailTo = "vijayi@amd.com"
$emailhost = "11.21.12.26"
function sendemail ($astrorptemail) {
$SmtpClient = new-object system.net.mail.smtpClient
$SmtpClient.host = $emailhost
$msg = new-object system.net.mail.MailMessage
$msg.From = $emailFrom
$msg.To.Add($emailTo)
$msg.Subject = $emailSubject
$msg.Body = Get-Content $alertFilename
$msg.IsBodyHtml = "True"
$SmtpClient.Send($msg)
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\pingresult.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
add-content C:\Scripts\Prod_Monitor\pingresult.txt "SUCCESS"
}
else
{
add-content C:\Scripts\Prod_Monitor\pingresult.txt "UNREACHABLE"
}
}
###############################################################################
Clear-content C:\Scripts\Prod_Monitor\uptime.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$Computerobj = "" | select ComputerName, Uptime, LastReboot
$wmi = Get-WmiObject -ComputerName $server -Query "SELECT LastBootUpTime FROM Win32_OperatingSystem"
$now = Get-Date
$boottime = $wmi.ConvertToDateTime($wmi.LastBootUpTime)
$uptime = $now - $boottime
$d =$uptime.days
$h =$uptime.hours
$m =$uptime.Minutes
$s = $uptime.Seconds
$Computerobj.ComputerName = $server
$Computerobj.Uptime = "$d Days $h Hours $m Min $s Sec"
$Computerobj.LastReboot = $boottime
$Computerobj | Select Uptime | foreach {$_.Uptime} | add-content C:\Scripts\Prod_Monitor\uptime.txt
}
else
{
add-content C:\Scripts\Prod_Monitor\uptime.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\sessions.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$SessionCount = Get-XAServer $server -full | select servername,Sessioncount | sort servername | Select Sessioncount | foreach {$_.Sessioncount}
| Add-Content C:\Scripts\Prod_Monitor\sessions.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\sessions.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\logonmode.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$LogonMode = Get-XAServer $server | Select ServerName, LogOnMode | sort ServerName | Select LogOnMode | foreach {$_.Logonmode} | Add-
Content C:\Scripts\Prod_Monitor\logonmode.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\logonmode.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\serverload.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$ServerLoad = Get-XAServerload $server | Sort Servername | Select Load | foreach {$_.Load} | Add-Content C:\Scripts\Prod_Monitor\serverload.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\serverload.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\imaservice.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$IMAService = get-service -comp $server | where-object {$_.Name -eq "IMAService"} | Select Status | foreach {$_.Status} | Add-Content C:
\Scripts\Prod_Monitor\imaservice.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\imaservice.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\xmlservice.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$XMLService = get-service -comp $server | where-object {$_.Name -eq "CtxHttp"} | Select Status | foreach {$_.Status} | Add-Content C:\Scripts
\Prod_Monitor\xmlservice.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\xmlservice.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\spoolerservice.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$SpoolerService = get-service -comp $server | where-object {$_.Name -eq "Spooler"} | Select Status | foreach {$_.Status} | Add-Content C:
\Scripts\Prod_Monitor\spoolerservice.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\spoolerservice.txt "UNREACHABLE"
}
}
###############################################################################
$server = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
$Sessions = Get-Content C:\Scripts\Prod_Monitor\sessions.txt
$Logon = Get-Content C:\Scripts\Prod_Monitor\logonmode.txt
$Load = Get-Content C:\Scripts\Prod_Monitor\serverload.txt
$Ping = Get-Content C:\Scripts\Prod_Monitor\pingresult.txt
$IMA = Get-Content C:\Scripts\Prod_Monitor\imaservice.txt
$XML = Get-Content C:\Scripts\Prod_Monitor\xmlservice.txt
$Spooler = Get-Content C:\Scripts\Prod_Monitor\spoolerservice.txt
$Uptime = Get-Content C:\Scripts\Prod_Monitor\uptime.txt
#######################################################################################
$a = "<style>"
$a = $a + "BODY{background-color:#D7D8D8;}"
$a = $a + "TABLE{text-align: center;border-width: 1px;border-style: solid;border-color: black;border-collapse: separate;}"
$a = $a + "TH{border-width: 1px;padding: 5px;border-style: solid;border-color: White;white;font-face:verdana;font-size:11pt;font-style: bold; color:
white;background-color:#084B8A}"
$a = $a + "TD{border-width: 1px;padding: 5px;border-style: solid;border-color: White;font-face:verdana;font-size:10pt;font-weight:bold;font-style:
bold; color: #151515;}"
$a = $a + "</style>"
function Combine-Arrays($headers,$array1,$array2,$array3,$array4,$array5,$array6,$array7,$array8,$array9)
{
for($index=0;$index -lt $array1.Count;$index++){
New-Object PSObject -property @{
$headers[0]=$array1[$index]
$headers[1]=$array2[$index]
$headers[2]=$array3[$index]
$headers[3]=$array4[$index]
$headers[4]=$array5[$index]
$headers[5]=$array6[$index]
$headers[6]=$array7[$index]
$headers[7]=$array8[$index]
$headers[8]=$array9[$index]
}
}
}
$headers = "ServerName","Logons","ServerLoad","PING","IMA_Service","XML_Service","Spooler_service", "ActiveSessions", "Uptime"
$body = Combine-Arrays $headers $Server $Logon $Load $Ping $IMA $XML $Spooler $Sessions $Uptime | ConvertTo-Html -fragment
$colorTagTable = @{Stopped = ' bgcolor="#ff0000">Stopped<';
Running = ' bgcolor="#00ff00">RUNNING<';
ProhibitLogOns = ' bgcolor="#ff0000">DISABLED<';
AllowLogOns = ' bgcolor="#00ff00">ENABLED<';
SUCCESS = ' bgcolor="#00ff00">SUCCESS<';
FAILURE = ' bgcolor="#ff0000">FAILURE<';
UNREACHABLE = ' bgcolor="#ff0000">UNREACHABLE<';
}
$colorTagTable.Keys | foreach { $body = $body -replace ">$_<",($colorTagTable.$_) }
"<br><br>" | out-file "C:\Scripts\Prod_Monitor\astro_mon.htm"
Get-date | out-file "C:\Scripts\Prod_Monitor\astro_mon.htm" -append
"<br><br>" | out-file "C:\Scripts\Prod_Monitor\astro_mon.htm" -append
ConvertTo-HTML -head $a -body "$body" | Out-File "C:\Scripts\Prod_Monitor\astro_mon.htm" -append
sendemail $astrorptemail
try { Add-PSSnapin Citrix.XenApp.Commands -ErrorAction Stop }
catch { write-error "Error loading XenApp Powershell snapin"; Return }
}
##############################################################################################
$email = "" | Select Host,From,To,Subject,Body,Attachment
$alertFilename="C:\scripts\Prod_monitor\astro_mon.htm"
$emailSubject="AUS - CITRIX SERVERS REPORT"
$emailFrom = "AProdCitrix@amds.com"
$emailTo = "vijayi@amd.com"
$emailhost = "11.21.12.26"
function sendemail ($astrorptemail) {
$SmtpClient = new-object system.net.mail.smtpClient
$SmtpClient.host = $emailhost
$msg = new-object system.net.mail.MailMessage
$msg.From = $emailFrom
$msg.To.Add($emailTo)
$msg.Subject = $emailSubject
$msg.Body = Get-Content $alertFilename
$msg.IsBodyHtml = "True"
$SmtpClient.Send($msg)
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\pingresult.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
add-content C:\Scripts\Prod_Monitor\pingresult.txt "SUCCESS"
}
else
{
add-content C:\Scripts\Prod_Monitor\pingresult.txt "UNREACHABLE"
}
}
###############################################################################
Clear-content C:\Scripts\Prod_Monitor\uptime.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$Computerobj = "" | select ComputerName, Uptime, LastReboot
$wmi = Get-WmiObject -ComputerName $server -Query "SELECT LastBootUpTime FROM Win32_OperatingSystem"
$now = Get-Date
$boottime = $wmi.ConvertToDateTime($wmi.LastBootUpTime)
$uptime = $now - $boottime
$d =$uptime.days
$h =$uptime.hours
$m =$uptime.Minutes
$s = $uptime.Seconds
$Computerobj.ComputerName = $server
$Computerobj.Uptime = "$d Days $h Hours $m Min $s Sec"
$Computerobj.LastReboot = $boottime
$Computerobj | Select Uptime | foreach {$_.Uptime} | add-content C:\Scripts\Prod_Monitor\uptime.txt
}
else
{
add-content C:\Scripts\Prod_Monitor\uptime.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\sessions.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$SessionCount = Get-XAServer $server -full | select servername,Sessioncount | sort servername | Select Sessioncount | foreach {$_.Sessioncount}
| Add-Content C:\Scripts\Prod_Monitor\sessions.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\sessions.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\logonmode.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$LogonMode = Get-XAServer $server | Select ServerName, LogOnMode | sort ServerName | Select LogOnMode | foreach {$_.Logonmode} | Add-
Content C:\Scripts\Prod_Monitor\logonmode.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\logonmode.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\serverload.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$ServerLoad = Get-XAServerload $server | Sort Servername | Select Load | foreach {$_.Load} | Add-Content C:\Scripts\Prod_Monitor\serverload.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\serverload.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\imaservice.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$IMAService = get-service -comp $server | where-object {$_.Name -eq "IMAService"} | Select Status | foreach {$_.Status} | Add-Content C:
\Scripts\Prod_Monitor\imaservice.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\imaservice.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\xmlservice.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$XMLService = get-service -comp $server | where-object {$_.Name -eq "CtxHttp"} | Select Status | foreach {$_.Status} | Add-Content C:\Scripts
\Prod_Monitor\xmlservice.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\xmlservice.txt "UNREACHABLE"
}
}
###############################################################################
Clear-Content C:\Scripts\Prod_Monitor\spoolerservice.txt
$prdgate = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
foreach ($server in $prdgate)
{
$result = Get-WmiObject Win32_PingStatus -filter "address='$server'"
if ($result.statuscode -eq 0)
{
$SpoolerService = get-service -comp $server | where-object {$_.Name -eq "Spooler"} | Select Status | foreach {$_.Status} | Add-Content C:
\Scripts\Prod_Monitor\spoolerservice.txt
}
else
{
Add-Content C:\Scripts\Prod_Monitor\spoolerservice.txt "UNREACHABLE"
}
}
###############################################################################
$server = Get-Content C:\Scripts\Prod_Monitor\xenservers.txt
$Sessions = Get-Content C:\Scripts\Prod_Monitor\sessions.txt
$Logon = Get-Content C:\Scripts\Prod_Monitor\logonmode.txt
$Load = Get-Content C:\Scripts\Prod_Monitor\serverload.txt
$Ping = Get-Content C:\Scripts\Prod_Monitor\pingresult.txt
$IMA = Get-Content C:\Scripts\Prod_Monitor\imaservice.txt
$XML = Get-Content C:\Scripts\Prod_Monitor\xmlservice.txt
$Spooler = Get-Content C:\Scripts\Prod_Monitor\spoolerservice.txt
$Uptime = Get-Content C:\Scripts\Prod_Monitor\uptime.txt
#######################################################################################
$a = "<style>"
$a = $a + "BODY{background-color:#D7D8D8;}"
$a = $a + "TABLE{text-align: center;border-width: 1px;border-style: solid;border-color: black;border-collapse: separate;}"
$a = $a + "TH{border-width: 1px;padding: 5px;border-style: solid;border-color: White;white;font-face:verdana;font-size:11pt;font-style: bold; color:
white;background-color:#084B8A}"
$a = $a + "TD{border-width: 1px;padding: 5px;border-style: solid;border-color: White;font-face:verdana;font-size:10pt;font-weight:bold;font-style:
bold; color: #151515;}"
$a = $a + "</style>"
function Combine-Arrays($headers,$array1,$array2,$array3,$array4,$array5,$array6,$array7,$array8,$array9)
{
for($index=0;$index -lt $array1.Count;$index++){
New-Object PSObject -property @{
$headers[0]=$array1[$index]
$headers[1]=$array2[$index]
$headers[2]=$array3[$index]
$headers[3]=$array4[$index]
$headers[4]=$array5[$index]
$headers[5]=$array6[$index]
$headers[6]=$array7[$index]
$headers[7]=$array8[$index]
$headers[8]=$array9[$index]
}
}
}
$headers = "ServerName","Logons","ServerLoad","PING","IMA_Service","XML_Service","Spooler_service", "ActiveSessions", "Uptime"
$body = Combine-Arrays $headers $Server $Logon $Load $Ping $IMA $XML $Spooler $Sessions $Uptime | ConvertTo-Html -fragment
$colorTagTable = @{Stopped = ' bgcolor="#ff0000">Stopped<';
Running = ' bgcolor="#00ff00">RUNNING<';
ProhibitLogOns = ' bgcolor="#ff0000">DISABLED<';
AllowLogOns = ' bgcolor="#00ff00">ENABLED<';
SUCCESS = ' bgcolor="#00ff00">SUCCESS<';
FAILURE = ' bgcolor="#ff0000">FAILURE<';
UNREACHABLE = ' bgcolor="#ff0000">UNREACHABLE<';
}
$colorTagTable.Keys | foreach { $body = $body -replace ">$_<",($colorTagTable.$_) }
"<br><br>" | out-file "C:\Scripts\Prod_Monitor\astro_mon.htm"
Get-date | out-file "C:\Scripts\Prod_Monitor\astro_mon.htm" -append
"<br><br>" | out-file "C:\Scripts\Prod_Monitor\astro_mon.htm" -append
ConvertTo-HTML -head $a -body "$body" | Out-File "C:\Scripts\Prod_Monitor\astro_mon.htm" -append
sendemail $astrorptemail
No comments:
Post a Comment