Автотест сервера EXCHANGE

Mar 21, 2013 16:47

У всех админов есть необходимость видеть состояние почтовой системы постоянно. Ну, по крайней мере, по расписанию получать некую информацию, говорящую о состоянии сервера.

Я сделал себе рассылку следующей информации.
Сколько у кого хранится почты, в каком хранилище лежит, кто и когда последний логинился и отключался от ящика ... ну, увидите :)
Далее, вывод команды Test-ServiceHealth и Test-SystemHealth
Ну, и список сервисов компьютера и их состояние.
Итак, поехали.

Код рабочий, только надо подставить свои параметры. Записываем содержимое в users.ps1 и смотрим на скрипт запуска.

[Много сложных технических слов и матерных компьютерных терминов]

###Отправка сценария статистики почтовых ящиков

###Сначала, администратор должен изменить значения
###сообщения следующим образом
###section

$FromAddress="exchanget@work.lan"
$ToAddress="it@work.lan"
$MessageSubject="Exchange status Report"
$MessageBody ="Attached is the current list of mailbox sizes."
$SendingServer="mail.work.lan"

###Теперь получить статистику и сохранить ее в
###текстовом файле

### Получаем информацию о почтовых ящиках и форматируем ее
Get-MailboxStatistics | Sort-Object TotalItemSize -Descending |ft @{ label="User name" ; expression={$_.DisplayName}}, @{ label="Last user accessed" ; expression={$_.LastLoggedOnUserAccount}}, @{ label="Last access date and time" ; expression={$_.LastLogonTime}}, @{ label="Last logoff time" ; expression={$_.LastLogoffTime}}, @{ label="Size in MB" ; expression={$_.TotalItemSize.Value.ToMB()}}, @{ label="Deleted in MB" ; expression={$_.TotalDeletedItemSize.Value.ToMB()}}, ItemCount, Database -autosize >users.txt

### Получаем состояние сервисов
Get-Service |ft Status, Name, DisplayName, DependentServices, ServicesDependedOn -autosize > serveces.txt

### самотест состояния сервера мне
Test-ServiceHealth > ServicesHealth.txt

### Ну и ошибочки сюда. Так, как собираются ошибки, мы ловим не первый поток - stdout, а второй, stderr
Test-SystemHealth |fl 2> SystemHealth.txt

### Создать сообщение
$SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody

### Добавить текстовые файлы состояния как вложения
$Attachment = New-Object Net.Mail.Attachment("users.txt")
$Attachment1 = New-Object Net.Mail.Attachment("serveces.txt")
$Attachment2 = New-Object Net.Mail.Attachment("ServicesHealth.txt")
$Attachment3 = New-Object Net.Mail.Attachment("SystemHealth.txt")

$SMTPMessage.Attachments.Add($Attachment)
$SMTPMessage.Attachments.Add($Attachment1)
$SMTPMessage.Attachments.Add($Attachment2)
$SMTPMessage.Attachments.Add($Attachment3)

###Отправить сообщение
$SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer
$SMTPClient.Send($SMTPMessage)

Так, скрипт выложен, а запускать-то его как?
Вот скрипт запуска, обычный файл .cmd, его можно запускать по расписанию, теперь.

mode CON: cols=450
rem А вот вам большая длина строки, а то в powershell строка таблицы обрезается по длине строки в шеле. Если не менять режима экрана, то мы ограничим себя длиной строки в таблицах в 80 символов, а нам же мало. Ну 450 нам хватит

net use z: \\server\logs
rem подключаем сетевую папку

z:
Rem переходим на вновьсозданный диск

del *.txt
Rem Зачищаем от текстовых файлов. Вдруг мусор остался.

PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.psc1" -Command "./users.ps1"
rem Собственно, запускаем ранее созданный скрипт
rem Формат даты-времени для excell ДД,ММММ, ГГГГ ч:мм;@

del *.txt
Rem Зачищаем от текстовых файлов. Мы же создали сами тут мусор

c:
Rem Возвращаемся домой, на свой диск C:

net use z: /delete /yes
rem отключаемся от сетевой папки

mode CON: cols=80
rem Ну и экран в исходное состояние, на всякий случай. Полезно при отладке.

И всё, теперь можно запустить по расписанию этот командник и наслаждаться диагностикой.

Вот примеры результатов

users.txt

User name Last user accessed Last access date and time Last logoff time Size in MB Deleted in MB ItemCount Database
--------- ------------------ ------------------------- ---------------- ---------- ------------- --------- --------
***************************** WORK\******** 20.03.2013 19:25:35 20.03.2013 20:04:42 7763 0 26500 MAIL\Mailbox Store\Mailbox Store
***************************** WORK\******** 20.03.2013 16:04:40 20.03.2013 18:10:39 5927 6 17941 MAIL\Mailbox Store\Mailbox Store

serveces.txt

Status Name DisplayName DependentServices ServicesDependedOn
------ ---- ----------- ----------------- ------------------
Stopped Acronis VSS Provider Acronis VSS Provider {} {rpcss}
Running AcronisAgent Acronis Remote Agent Service {} {}
Running AcrSch2Svc Acronis Scheduler2 Service {MMS} {RpcSs}
Running AdaptecStorageManagerAgent Adaptec Storage Manager Agent {} {}
Stopped AdoNavSvc AdoNavSvc {} {RPCSS}
Stopped AeLookupSvc Информация о совместимости приложений {} {}
Stopped ALG Служба шлюза уровня приложения {} {}

ServicesHealth.txt

Role RequiredServicesRunning ServicesRunning ServicesNotRunning
---- ----------------------- --------------- ------------------
Роль сервера True IISAdmin
почтовых ящик MSExchangeADTopology
ов MSExchangeIS
MSExchangeMailboxAssis
tants
MSExchangeMailSubmissi
on
MSExchangeRepl
MSExchangeSA
MSExchangeSearch
MSExchangeServiceHost
MSExchangeTransportLog
Search
MSFTESQL-Exchange
W3Svc
Роль сервера True IISAdmin
клиентского д MSExchangeADTopology
оступа MSExchangeFDS
MSExchangeIMAP4
MSExchangePOP3
MSExchangeServiceHost
W3Svc
Роль транспор True MSExchangeADTopology
тного сервера MSExchangeEdgeSync
-концентратор MSExchangeTransport
а MSExchangeTransportLog
Search

Ну SystemHealth у меня пуст, не могу показать :)

Вперед, админы, автоматизируйтесь и скриптуйтесь :)


Читаем остальные статьи для пользователей и админов по тегу " Компьютизмы"


exchange, Компьютизмы, exchange 2010, #Компьютер

Previous post Next post
Up