sergey vasin

The IT blog

Отправляем информацию о состоянии служб по электронной почте – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает как отправить информацию о состоянии служб по электронной почте при помощи Windows PowerShell.

Q: Мне бы хотелось отслеживать несколько служб, запущенных на удаленном сервере. Я бы хотел получать информацию о состоянии служб по электронной почте. Я поискал информацию по этой задаче в интернете и не нашел ничего подходящего – все достаточно сложно. Можете мне помочь?

Проверяем состояние служб на удаленном компьютере

Для проверки состояния служб на удаленном компьютере я могу воспользоваться командлетом Get-Service (при условии, что я обладаю необходимыми правами и сетевой экран не блокирует подключение). Это достаточно просто. Предположим, мне нужно отслеживать состояние служб SQL Server. Все его службы начинаются с «MSSQL». Я могу получить информацию об этих службах с помощью следующей команды.

gsv -cn sql1 -Name mssql*

Нужно помнить о том, что командлет Get-Service возвращает объект, в нашем случае – серию объектов. Наша конечная цель – переслать информацию по электронной почте, однако я не могу поместить объект в письмо. Это означает, что мне нужно сконвертировать полученные объекты в строки. Для этой цели мы воспользуемся командлетом Out-String. Код для получения информации о службах SQL с удаленного сервера SQL1 и конвертации полученной информации в строку приведен ниже.

14:57 C:\> gsv -cn sql1 -Name mssql* | out-string

Status Name DisplayName

—— —- ————

Running MSSQL$SHAREPOINT SQL Server (SHAREPOINT)

Running MSSQLFDLauncher SQL Full-text Filter Daemon Launche…

Running MSSQLSERVER SQL Server (MSSQLSERVER)

Stopped MSSQLServerADHe… SQL Active Directory Helper Service

Running MSSQLServerOLAP… SQL Server Analysis Services (MSSQL…

Отправляем E-Mail

В Windows PowerShell 2.0 появился отличный командлет – Send-MailMessage. Он позволяет, правильно: отправить электронное письмо. Удобно указать значения по умолчанию для параметров этого командлета – таких как –From и –SMTPServer. В Windows PowerShell 3.0 это делается довольно просто. Однако сейчас я не буду этим заниматься. Мне нужно будет указать значения для следующих параметров: From, To, Subject, Message и SMTPServer. В качестве значения для параметра –Message я укажу приведенную ранее команду.

Send-MailMessage -To edwilson@contoso.net -From «ed@iammred.net» -SmtpServer ex1.contoso.net -Subject «Service Status SQL1» -body ((gsv -cn sql1 -Name mssql*) | out-string)

Сообщение показано на рисунке ниже.

01

Вот и все, что касается использования Windows PowerShell для получения информации о состоянии служб на удаленном сервере. Вы можете назначить задание в Task Scheduler для того, чтобы получать письма о состоянии служб каждый час или через любой другой интервал времени. Я достаточно много писал о Windows PowerShell и Task Scheduler.

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/19/send-an-email-message-with-service-status-via-powershell.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Декабрь 30, 2012 в 14:18

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s