Рестарт IIS через PowerShell

PowerShellРестарт IIS + PowerShell + Task Scheduler. Связка весьма замечательная, особенно, когда в случае неудачного запуска высылается письмо на почту. В этой статье мы с вами научимся перезапускать Internet Information Service.

Рестарт IIS через PowerShell

Вопрос главный, но не единственный: зачем ребутать iis? А затем, что иногда в веб-приложениях появляются ошибки, которые правятся только ребутом IIS-a. Конечно, еще некоторые изменения веб-конфигов могут потребовать перезапуска. Но в моей практике возникали именно ошибки, которые решались путем перезапуска. Я решил пойти простым способом, воспользовавшись командой iisreset, но далее я подумал: “А что если iis не запустится? Как я об этом узнаю?” сразу же я пришел к тому, что необходимо делать проверку.

Так как PowerShell не возвращает результат выполнения скрипта, то есть неизвестно с ошибками он выполнился или без, нужен был какой-то критерий, по которому можно отслеживать успешный результат. В итоге я решил ссылаться на одну единственную фразу, которая имеете в ряде строк при успешном перезапуске IIS – Internet services successfully restarted. Соответственно, мне необходимо реализовать проверку и в случае отрицательного результата, я решил воспользоваться способом оповещения через письмо, который описал в этой статье. Плюс ко всему, если понадобится скалировать скрипт на несколько серверов, я бы хотел знать, на котором возникла проблема. Приступим к реализации:

Первым делом получим имя сервера:
$server = hostname

Далее вобьем в переменную команду перезапуска IIS:
$iisr = iisreset

После чего, добавим переменную, которая будет в себе содержать искомое значение:
$equals = “Internet services successfully restarted”

Отлично, теперь необходимо добавить проверку. Мы знаем, что в одной из четырех строк, которые выводятся как результат выполнения команды имеется и наша строка из переменной $equals. Соответственно мы будем проверять текст, следующим образом:

$Final = echo $iisr.Contains($equals)

Проверка реализована, едем дальше. Так как у нас есть условие для отправки письма, будет логично заранее подумать о том, что у нас появится if. Но предварительно нам необходимо задать настройки для адреса, на который отправлять письмо и адреса, с которого отправлять письмо:
$EmailFrom = “e@mail.ru”
$EmailTo =”target@mail.ru”

Пришло время добавить условия отправки письма:

if ($Final -ne “True”)

Итог:

Соответственно в теле нужно выполнить отправку письма. В переменной $Final мы получим значение либо True, либо False, поэтому в условии мы указываем, что письмо необходимо отправлять в том случае, если в переменной Final значение равно False. ПыСы: условие еще можно написать так: if ($Final -eq “False”) – эквивалентно первому варианту.

В целом, весь скрипт выглядит так:

Кстати, если перезапуск IIS был успешен, то никаких отчетов не высылается. Подписывайтесь на нашу группу ВК и YouTube-канал!

0

Автор публикации

не в сети 37 минут

Vapi

0
Комментарии: 20Публикации: 70Регистрация: 14-04-2017

Поделиться в соц. сетях:

Понравилась статья? Поблагодари автора, накорми печеньками! :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *