Powershell — Управление сервисами

PowerShellPowerShell — управление сервисами или процессами от части уже описано в этой статье. Тем не менее сегодня мы разберем более тривиальные сценарии, без создания механизма перезапуска. Поймем как правильно работать с командлетами. А так же освоим командлеты, которые предназначены для работы с сервисами.

Powershell — управление сервисами.

В рамках какой-либо автоматизации рано или поздно появляется необходимость останавливать сервис, запускать какие-то сценарии и снова запускать сервис. Для решения этих задач в powershell были внесены командлеты Start-Service и Stop-Service. Каждый из них выполняет соответствующее действие. Для начала с помощью ps можно получить статус, имя и отображаемое имя всех сервисов с помощью команды Get-Service. Для удобства можно оставить только name и status столбцы: Get-Service | Select name,status.

В этом списке можно увидеть какие сервисы у вас не запущены. Соответственно для запуска используется Start-Service:

Так же для остановки сервиса используется соответствующий командлет:

Ничего сложного.

Так как консоль после остановки и запуска сервисов ничего не выдает, рекомендую вам сразу добавлять конструкцию Get-Service service_name. Таким образом вы сможете моментально получить информацию о статусе сервиса:

Для того, чтобы получать информацию только о статусе запускаемого сервера, можно сделать так:

На самом деле можно сделать еще проще. Чтобы получить только статус в виде строки Running используем такую конструкцию:

Теперь давайте разберемся, что можно делать с этим статусом.

Предлагаю собрать строку, где сначала сервис будет останавливаться, потом стартовать и в конце выдавать сообщение, что все запущено успешно. Создадим переменную с именем сервиса, напишем сценарий его запуска и остановки, с поэтапным выводом в консоль, используя минимальное количество статического текста. Вся информация будет сформирована в строку путем вывода системных данных:

Теперь поменяем Stop-Service на Start-Service:

Как видите наша строка стала динамичной и меняется она основываясь на данных, которые получаются в результате вывода команды Get-Service. Таким образом можно формировать свой собственный лог для отладки каких-либо задач.

Итог:

Возвращаясь к автоматизации. Мои Powershell скрипты гоняются на сервере TeamCity. Соответственно я заинтересован в максимально подробном логе и часто прибегаю к такой методике. На этом пожалуй все. Подписывайтесь на наш канал на ютубе, на группу в ВК и другие ресурсы. Надеюсь статья была для вас полезной, а если остались вопросы — пишите их в комментариях. Спасибо за внимание!

Лицензионное соглашение

Авторские права публикуемых материалов полностью или частично принадлежат авторам сайта Pechenek.NET в соответствии со статьями 1252 и 1301 ГК РФ. Любое распространение должно быть согласовано с автором материала или с указанием ссылки на первоисточник.