Advertisement
Guest User

Untitled

a guest
Feb 10th, 2017
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. # Для работы скрипта необходимо задать переменные:
  2. # $clientname, $hvhosts
  3. #
  4. # В функции отправки почты в техподдержку задать переменные:
  5. # $emailTo, $emailFrom, $password, $smtpServer
  6. #
  7.  
  8.  
  9. ##############################################################################
  10.  
  11. #отправка почты в саппорт
  12. function send-email-to-support ([string]$subject, [string]$body)
  13. {
  14. $emailTo = 'email1@gmail.com', 'email2@mail.ru', "email3@outlook.com" # адреса получателей в кавычках через запятую
  15. $emailFrom = 'email4@mail.ru' # адрес отправителя
  16. $password = 'emailpassword' # пароль отправителя
  17. $smtpServer = 'smtp.mail.ru' # smtp сервер отправителя
  18.  
  19. $secpwd = ConvertTo-SecureString $password -AsPlainText -Force
  20. $credential = New-Object System.Management.Automation.PSCredential ($emailFrom, $secpwd)
  21. Send-MailMessage -From $emailFrom -Subject $subject -Body $body -To $emailTo -Credential $credential -DeliveryNotificationOption None -Priority High -SmtpServer $smtpServer -UseSsl
  22. }
  23.  
  24. ##############################################################################
  25.  
  26.  
  27. cls
  28.  
  29. $clientname = 'mydomain' #имя клиента для указания в теме письма
  30. $hvhosts = 'host1', 'host2', 'host3' #серверы для проверки
  31.  
  32. $iserrors = 0 #флаг, индицирующий наличие ошибок
  33. $iswarnings = 0 #флаг, индицирующий наличие предупреждений
  34. $message = '' #переменная для описания ошибок, ничего указывать не надо
  35.  
  36. foreach ($hvhost in $hvhosts) #делаем обход хостов HV, указаных в массиве $hvhosts
  37. {
  38. Write-Host "Опрос сервера $hvhost`n"
  39. $vms = Get-VM -ComputerName $hvhost #выбираем все ВМ на хосте
  40. foreach($vm in $vms) #делаем обход всех ВМ
  41. {
  42. #Автозапускаемая ВМ не запущена:
  43. If ($vm.ReplicationMode -eq 'Primary' -and $vm.AutomaticStartAction -eq 'Start' -and $vm.State -ne 'Running') #если ВМ не реплика и настроен старт при запуске и не запущена
  44. {
  45. $iserrors = 1
  46. $message = $message + '' + $hvhost + '\' + $vm.Name + ": not started, starting`n"
  47. Start-VM -VM $vm
  48. }
  49.  
  50.  
  51. #Критическое состояние репликации
  52. If ($vm.ReplicationHealth -eq 'Critical')
  53. {
  54. $iserrors = 1
  55. $message = $message + "$hvhost\" + $vm.Name + ": replication health is critical (state: " + $vm.ReplicationState + "), resuming`n"
  56. if ($vm.ReplicationState -ne 'Replicating' -and $vm.ReplicationState -ne 'Resynchronizing') #если репликация не работает, попробуем ее возобновить
  57. {
  58. if ($vm.ReplicationState -eq 'WaitingForStartResynchronize')
  59. {
  60. Resume-VMReplication -VM $vm -Resynchronize
  61. }
  62. else
  63. {
  64. Resume-VMReplication -VM $vm
  65. }
  66. }
  67. }
  68.  
  69. #Предупреждения по состоянию репликации
  70. If ($vm.ReplicationHealth -eq 'Warning')
  71. {
  72. $iswarnings = 1
  73. $message = $message + '' + $hvhost + '\' + $vm.Name + ": replication health is warning (state: " + $vm.ReplicationState + "), reseting state info`n"
  74. if ($vm.ReplicationState -ne 'Replicating' -and $vm.ReplicationState -ne 'Resynchronizing') #если репликация не работает, попробуем ее возобновить
  75. {
  76. Resume-VMReplication -VM $vm
  77. }
  78. else #иначе сбросим статистику
  79. {
  80. Reset-VMReplicationStatistics -VM $vm
  81. }
  82. }
  83. }
  84. }
  85.  
  86.  
  87. if ($iserrors -eq 1) #если есть ошибки
  88. {
  89. $subject = "$clientname : Hyper-V errors!"
  90. Write-Host $message
  91. send-email-to-support $subject $message
  92. }
  93. elseif ($iswarnings -eq 1) #если есть предупреждения
  94. {
  95. $subject = "$clientname : Hyper-V warnings!"
  96. Write-Host $message
  97. send-email-to-support $subject $message
  98. }
  99. else #если все в порядке
  100. {
  101. $subject = "$clientname : Hyper-V is ok"
  102. $message = 'All ok'
  103. Write-Host $subject
  104. #send-email-to-support $subject $message
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement