.
Сразу после загрузки среды SQLPS я подключаюсь к серверу, создавая новый объект SMO Server, ссылающийся на новый экземпляр сервера.
$inst = 'WS12SQL' $svr = new-object ('Microsoft.SqlServer.Management.Smo.Server') $inst Если компонент Database Mail не включен, я включаю его (он входит в набор расширенных возможностей, поэтому для настройки работы с почтой его необходимо включить). # Enable Database Mail $svr.Configuration.ShowAdvancedOptions.ConfigValue = 1 $svr.Configuration.DatabaseMailEnabled.ConfigValue = 1 $svr.Configuration.Alter()
Затем ссылку на объект Mail нашего сервера запомним в переменной, которую позднее используем в двух местах.
$mail = $svr.Mail
Для настройки Database Mail вначале необходимо задать объект типа MailAccount. Этому объекту в качестве параметров необходимы ссылка на упомянутый выше объект Mail и имя учетной записи. Новый объект я присваиваю переменной с именем $acct, а затем задаю свойствам учетной записи требуемые значения. После этого я вызываю метод Create() для создания учетной записи.
$acct = new-object ('Microsoft.SqlServer.Management.Smo.Mail.MailAccount') ($mail, 'sqldba') $acct.Description = 'Database Administrator Email' $acct.DisplayName = 'Database Administrator' $acct.EmailAddress = 'sqldba@example.com' $acct.ReplyToAddress = 'sqldba@example.com' $acct.Create()
Объект типа MailAccount содержит набор с именем MailServers, но он не позволяет создать новый объект типа MailServer. При этом в процессе генерации объекта MailAccount создается объект MailServer, свойства которого имеют значения по умолчанию. Для переопределения свойств объекта MailServer я устанавливаю переменную на первый элемент набора MailServers (используя значение индекса, равное 0) и затем вызываю метод Rename() объекта MailServer для задания имени SMTP-сервера, который мне необходим. Далее я устанавливаю значение свойства EnableSsl равным False, а свойство UserName равным пустой строке, что приводит к использованию анонимного подключения в сеансе работы по протоколу SMTP. После задания этих свойств я вызываю метод Alter() для объектов MailServer и MailAccount, чтобы сохранить сделанные изменения.
$mlsrv = $acct.MailServers $mls = $mlsrv.Item(0) $mls.Rename('smtpsrv.example.com') $mls.EnableSsl = 'False' $mls.UserName = '' $mls.Alter() $acct.Alter()
И последнее, что мне надо сделать, это настроить почтовый профиль, для чего я буду использовать объект MailProfile. Для этого необходимы ссылка на объект Mail моего сервера, имя профиля и его описание. Для создания профиля я вызываю метод Create(), а затем — метод AddAccount() для добавления к профилю ранее созданной учетной записи. Методу AddAccount() в качестве параметров необходимы имя учетной записи и порядковый номер (sequence number) учетной записи. После выполнения этих действий я вызываю метод Alter() для внесения изменений в профиль.
$mlp = new-object ('Microsoft.SqlServer.Management.Smo.Mail.MailProfile') ($mail, 'DBAMail', 'Database Administrator Mail Profile') $mlp.Create() $mlp.AddAccount('sqldba', 1) $mlp.Alter()
С помощью данного сценария я очень быстро настраиваю компонент Database Mail на сервере и теперь могу использовать профиль с именем DBAMail в агенте SQL Server Agent для отправки почтовых сообщений в случае, если что-то не работает.