Не так давно мне достались в управление несколько серверов Exchange 2007. Когда понадобилось срочно наладить хоть какую-то систему мониторинга. Не секрет что в Exchange Management Shell есть множество командлетов для тестирования различных сервисов, все они начинаются с Test- и получить их список можно командой
get-excommand Test-*
Я решил использовать эти командлеты в скрипте который будет проверять доступность всех сервисов.
Я использовал следующий метод:
как я уже писал в предыдущем посте можно получить пароль пользователя в виде объекта PowerShell:
$pass = cat C:\scripts\securestring.txt | convertto-securestring
Записываем имя пользователя в переменную
$un = "username"
Используем эти переменные в качестве параметров для PSCredential
$mycred = new-object -typename System.Management.Automation.PSCredential
-argumentlist $un,$pass
Массив серверов который будет использоваться во время тестирования
$cas="server1","server2"
Массив url OWA:
$owaurl = "https://FQDN/owa","https://FQDN/owa"
Функция send-email, тут ее приводить не вижу смысла, легко ищется в интернетах, однако скажу что в качестве параметров функции передается заголовок и тело письма
function sndem { }
Следующие две функции выводят сообщения на консоль, если скрипт запускается не по шедулеру, а ради проверки.
#function errormsg {
# param($tstname,$trgt)
#
# Write-Host "Test " $tstname " on " $trgt", result: Fail" -foregroundcolor "red"
# }
#
#function successmsg {
# param([string]$tstname,[string]$trgt)
# Write-Host "Test" $tstname" on "$trgt", result: Success" -foregroundcolor "green"
#}
Ну теперь собственно основная функция скрипта
foreach ($siteurl in $owaurl) {
$tstowa = Test-OwaConnectivity -URL $siteurl -MailboxCredential $mycred
if ($tstowa.Result -like "Success" )
{
# successmsg "OWA connectivity" $siteurl //выводим сообщение на консоль
}
else
{
# errormsg "OWA connectivity" $siteurl
sndem "Test OWA failed!!!" $siteurl // посылаем сообщение при неудаче
}
}
Аналогично используются комндлеты test-imapconnectivity, test-popconnectivity и протчие.
Скрипт засовывается в шедулер, отрабатывает он примерно за минуту, частоту вы можете выставить сами.
28 февраля 2009
23 февраля 2009
Используем PSCredentials без подтверждения пароля
Частичный перевод отсюда.
Мне понадобилось настроить тестирование OWA посредством powershell скриптов с внешнего сервера. Есть замечательный командлет Test-OwaConnectivity, однако для проверки внешнего OWA-интерфейса (не входящего в домен из которого проходит тестирование) необходимо изменить команду следующим образом.
Test-OwaConnectivity -URL https://[exchange cas server]/owa -MailboxCredential (Get-Credential test)
Однако при использовании командлета Get-Credential необходимо вводить пароль в поп-апе, а если хочется процесс автоматизировать это не приемлимо.
Есть способ, мы можем сохранить пароль в файле, чтобы затем использовать его в качестве передаваемого объекта.
read-host -assecurestring | convertfrom-securestring | out-file C:\что-нибудь там.txt
В последствии пароль может считан из файла в качестве параметров к Get-Credential, например так:
$pass = cat C:\что-нибудь там.txt | convertto-securestring
$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "test",$pass
И в результате мы можем получить выполнить нашу команду
Test-OwaConnectivity -URL https://[exchange cas server]/owa -MailboxCredential $mycred
Или выполнить ее в скрипте, запускаемом по заданию например раз в 5 минут.
Что касается безопасности подобного хранения данных. Злоумышленник, проникнув на сервер конечно может использовать данный файл для получения каких-то данных, однако в отличие от оригинала статьи я не предлагаю хранить в нем данные от аккаунта ftp на продакшн сервере, а аккаунт для тестирования доступности OWA естественно создан с минимальными привилегиями, так что уровень риска приемлем.
Сама же строка с данными пароля (например qwerty) выглядит следующим образом:
01088800d08c9ddf0115d1118c7a00c04fc297eb01000000d5a25b6560bb714aab7edb5a87ad4c1
66000000002000000000003760000a8000000100000009ae0746b5f94995e6198881ba58ada9100
00000004800000a0000000100000009c2aba5bf0fcf53ecd573b45c18b127b180000000641b6884
9b09b15b650d5a0a3927569f5d47ba7afc7f8ca14000000b2ce9a87c9e5a4473c9cf0804dcd68de
638d508a
Have fun!
Мне понадобилось настроить тестирование OWA посредством powershell скриптов с внешнего сервера. Есть замечательный командлет Test-OwaConnectivity, однако для проверки внешнего OWA-интерфейса (не входящего в домен из которого проходит тестирование) необходимо изменить команду следующим образом.
Test-OwaConnectivity -URL https://[exchange cas server]/owa -MailboxCredential (Get-Credential test)
Однако при использовании командлета Get-Credential необходимо вводить пароль в поп-апе, а если хочется процесс автоматизировать это не приемлимо.
Есть способ, мы можем сохранить пароль в файле, чтобы затем использовать его в качестве передаваемого объекта.
read-host -assecurestring | convertfrom-securestring | out-file C:\что-нибудь там.txt
В последствии пароль может считан из файла в качестве параметров к Get-Credential, например так:
$pass = cat C:\что-нибудь там.txt | convertto-securestring
$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "test",$pass
И в результате мы можем получить выполнить нашу команду
Test-OwaConnectivity -URL https://[exchange cas server]/owa -MailboxCredential $mycred
Или выполнить ее в скрипте, запускаемом по заданию например раз в 5 минут.
Что касается безопасности подобного хранения данных. Злоумышленник, проникнув на сервер конечно может использовать данный файл для получения каких-то данных, однако в отличие от оригинала статьи я не предлагаю хранить в нем данные от аккаунта ftp на продакшн сервере, а аккаунт для тестирования доступности OWA естественно создан с минимальными привилегиями, так что уровень риска приемлем.
Сама же строка с данными пароля (например qwerty) выглядит следующим образом:
01088800d08c9ddf0115d1118c7a00c04fc297eb01000000d5a25b6560bb714aab7edb5a87ad4c1
66000000002000000000003760000a8000000100000009ae0746b5f94995e6198881ba58ada9100
00000004800000a0000000100000009c2aba5bf0fcf53ecd573b45c18b127b180000000641b6884
9b09b15b650d5a0a3927569f5d47ba7afc7f8ca14000000b2ce9a87c9e5a4473c9cf0804dcd68de
638d508a
Have fun!
15 февраля 2009
crm's feature
Недавно из-за уборщицы случилось падение sql сервера на котором вертелась база CRM. Все нормально,базу подняли, все вроде работает, но вдруг поступают вопросы клиентов что к CRM порталу не подключится. Начинаю искать, с тоски полез в сам каталог с фронт-ендом, нашел там папочку Test с одним файлом следующего содержания:
Просто обалденная проверка работоспособности сервиса.
<%@ Page language="c#" Inherits="Microsoft.Crm.Test.Pages.TestPage" CodeBehind="Microsoft.Crm.Test.Pages.dll"%>
CRM Test Page
Time : <% = DateTime.Now.ToString() %>
Просто обалденная проверка работоспособности сервиса.
Подписаться на:
Сообщения (Atom)