Advertisement
Guest User

Untitled

a guest
Sep 15th, 2017
429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. [Array]$vCenters = @("172.168.1.50","192.168.0.50")
  2. [String]$vCenterUsername="sudershan.bharti@gmail.com"
  3. [String]$vCenterPassword="Passw0rd"
  4. [String]$smtpServer="smtp.gmail.com"
  5. [String]$OutputCsv="C:\Temp\vCenterAlarms.csv" #Where you want to place generated report
  6. [String]$OutputFile="C:\Temp\vCenterAlarms.html" #Where you want to place generated report
  7. $i = 0
  8.  
  9. Function Set-AlternatingRows {
  10. [CmdletBinding()]
  11. Param(
  12. [Parameter(Mandatory=$True,ValueFromPipeline=$True)]
  13. [object[]]$HTMLDocument,
  14.  
  15. [Parameter(Mandatory=$True)]
  16. [string]$CSSEvenClass,
  17.  
  18. [Parameter(Mandatory=$True)]
  19. [string]$CSSOddClass
  20. )
  21. Begin {
  22. $ClassName = $CSSEvenClass
  23. }
  24. Process {
  25. [string]$Line = $HTMLDocument
  26. $Line = $Line.Replace("<tr>","<tr class=""$ClassName"">")
  27. If ($ClassName -eq $CSSEvenClass)
  28. { $ClassName = $CSSOddClass
  29. }
  30. Else
  31. { $ClassName = $CSSEvenClass
  32. }
  33. $Line = $Line.Replace("<table>","<table width=""50%"">")
  34. Return $Line
  35. }
  36. }
  37.  
  38. $Header = @"
  39. <style>
  40. TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
  41. TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}
  42. TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;white-space: nowrap;}
  43. .odd { background-color:#ffffff }
  44. .even { background-color:#dddddd }
  45. </style>
  46. <title>
  47. vCenter Alarms
  48. </title>
  49. "@
  50.  
  51. Function Get-TriggeredAlarms {
  52. Write-Host "Connecting to vCenter $_" -foregroundcolor "magenta"
  53. $vc = Connect-VIServer $vCenter -User $vCenterUsername -Password $vCenterPassword
  54.  
  55. $rootFolder = Get-Folder -Server $vc "Datacenters"
  56.  
  57. foreach ($ta in $rootFolder.ExtensionData.TriggeredAlarmState) {
  58. $alarm = "" | Select-Object VC, EntityType, Alarm, Entity, Status, Time, Acknowledged, AckBy, AckTime
  59. $alarm.VC = $vCenter
  60. $alarm.Alarm = (Get-View -Server $vc $ta.Alarm).Info.Name
  61. $entity = Get-View -Server $vc $ta.Entity
  62. $alarm.Entity = (Get-View -Server $vc $ta.Entity).Name
  63. $alarm.EntityType = (Get-View -Server $vc $ta.Entity).GetType().Name
  64. if($ta.OverallStatus -eq "yellow"){
  65. $Alertcode = "Orange"
  66. }
  67. elseif($ta.OverallStatus -eq "red"){
  68. $Alertcode = "red"
  69. }
  70. else{
  71. $Alertcode = "black"
  72. }
  73. $alarm.Status = "<p style=color:" + $Alertcode + "; >" + $ta.OverallStatus + "</p>"
  74. $alarm.Time = $ta.Time
  75. $alarm.Acknowledged = $ta.Acknowledged
  76. $alarm.AckBy = $ta.AcknowledgedByUser
  77. $alarm.AckTime = $ta.AcknowledgedTime
  78. $alarm
  79. $i++
  80. Write-Progress -Activity "Looking up Alarms" -Status "Current alarm: $i in $vCenter" -PercentComplete ($i/$rootFolder.ExtensionData.TriggeredAlarmState.count*100)
  81. }
  82. Disconnect-VIServer $vCenter -Confirm:$false
  83. }
  84.  
  85. Write-Host ("Getting the alarms from {0} vCenters." -f $vCenters.Length)
  86.  
  87. $alarms = @()
  88. foreach ($vCenter in $vCenters) {
  89. Write-Host "Getting alarms from $vCenter."
  90. $alarms += Get-TriggeredAlarms $vCenter
  91. }
  92. #$alarms = $alarms | Where {$_.EntityType -ne "VirtualMachine"} | sort-object -Property VC
  93. $alarms = $alarms | sort-object -Property VC
  94. $alarms | Export-Csv -Path $OutputCsv -NoTypeInformation
  95. $alarms = $alarms | ConvertTo-Html -Head $Header | Set-AlternatingRows -CSSEvenClass even -CSSOddClass odd | foreach {$_.replace("<","<").replace(">",">")} | Out-File $OutputFile
  96.  
  97. $emailBody = Get-Content $OutputFile
  98. Send-MailMessage -From "vCenterAlarms@Gmail.com" -To "sudershan.bharti@gmail.com" -Subject "vCenter Hardware Alarm Report" -Body ($emailBody | Out-String) -BodyAsHtml -Priority High -Attachments $OutputCsv -SmtpServer $smtpServer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement