Exchange 2010. Автоматическое приветственное письмо новому сотруднику компании
Нужно на сервере Exchange сделать оповещение при создании почты у нового сотрудника. Я не силён в ps, поэтому взял скрипт из интернета.
Листинг ScriptingAgentConfig.xml
<?xml version="1.0" encoding="utf-8" ?>
<Configuration version="1.0">
<Feature Name="WelcomeEmail" Cmdlets="New-Mailbox,Enable-Mailbox">
<ApiCall Name="OnComplete">
if($succeeded) {
# Определение переменных
$WelcomeMessage = "C:\scripts\welcome.html"
$SenderEmail = "[email protected]"
$MessageSubject = "Welcome to our company!"
$SMTPServer = "exchange.company.com"
$TargetOU = "company.com/Users"
# Указание на просмотр всего леса
Set-ADServerSettings -ViewEntireForest $true
# Определение Alias в случае, если была исполнена команда New-Mailbox
if ($provisioningHandler.TaskName -eq "New-Mailbox") {
$UsrAlias = $provisioningHandler.UserSpecifiedParameters["Alias"]
$UsrNewMailbox = $true
}
# Определение Alias в случае, если была исполнена команда Enable-Mailbox
if ($provisioningHandler.TaskName -eq "Enable-Mailbox") {
$UsrIdentity = $provisioningHandler.UserSpecifiedParameters["Identity"].ToString()
$UsrAlias = (Get-Mailbox -Identity $UsrIdentity).Alias
}
# Определение, создается ли архивный ящик (нам не нужно приветствовать пользователя при создании архива)
if ($provisioningHandler.UserSpecifiedParameters.Contains("Archive") -eq $true) {
$UsrArchive = $true
}
# Определение SMTP-адреса по Alias
$UsrAddr = (Get-Mailbox -Filter {Alias -eq $UsrAlias}).PrimarySmtpAddress.ToString()
# Определение Organizational Unit, в котором создан пользователь
$UsrOU = (Get-Mailbox -Filter {Alias -eq $UsrAlias}).OrganizationalUnit
# Отправка уведомления при создании нового почтового ящика в указанном OU
if (($UsrOU -match "$TargetOU") -and (($UsrArchive -ne $true) -or ($UsrNewMailbox -eq $true))){
$UsrMsg = [string](Get-Content "$WelcomeMessage")
Send-MailMessage -SmtpServer "$SMTPServer" -To "$UsrAddr" -From "$SenderEmail" -Subject "$MessageSubject" -Body $UsrMsg -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8)
}
# Тихая очистка переменных
if ($UsrAlias) { Remove-Variable UsrAlias }
if ($UsrAddr) { Remove-Variable UsrAddr }
if ($UsrOU) { Remove-Variable UsrOU }
if ($UsrMsg) { Remove-Variable UsrMsg }
if ($UsrIdentity) { Remove-Variable UsrIdentity }
if ($UsrSamAccountName) { Remove-Variable UsrSamAccountName }
if ($UsrArchive) { Remove-Variable UsrArchive }
if ($UsrNewMailbox) { Remove-Variable UsrNewMailbox }
}
</ApiCall>
</Feature>
</Configuration>
При его выполнении пишет ошибку
Сводка: всего элементов: 1. Успешно: 1, с ошибками: 0. Прошло времени: 00:00:05
asd asd Завершено
Предупреждение: Агент расширения командлета с индексом 5 создал исключение в OnComplete(). Исключение: >Microsoft.Exchange.Provisioning.ProvisioningException: ScriptingAgent: в ходе вызова сценария для API >OnComplete возникло исключение: Серверу SMTP требовалось защищенное соединение, или подлинность клиента >не была установлена. Ответ сервера: 5.7.1 Client was not authenticated. ---> >System.Net.Mail.SmtpException: Серверу SMTP требовалось защищенное соединение, или подлинность клиента >не была установлена. Ответ сервера: 5.7.1 Client was not authenticated в System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) в System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String >deliveryNotify, SmtpFailedRecipientException& exception) в System.Net.Mail.SmtpClient.Send(MailMessage message) в Microsoft.PowerShell.Commands.SendMailMessage.EndProcessing() --- Конец трассировки внутреннего стека исключений --- в Microsoft.Exchange.ProvisioningAgent.ScriptingAgentHandler.OnComplete(Boolean succeeded, Exception >e) в Microsoft.Exchange.Provisioning.ProvisioningLayer.OnComplete(Task task, Boolean succeeded, >Exception exception)>
Завершено выполнение команды командной консоли Exchange: New-Mailbox -Name 'asd asd' -Alias 'asd' -UserPrincipalName '[email protected]' -SamAccountName 'asd' ->FirstName 'asd' -Initials '' -LastName 'asd' -Password 'System.Security.SecureString' ->ResetPasswordOnNextLogon $false
Прошло времени: 00:00:05
Нужно что-то в самом скрипте исправить, или в настройках консоли эксченджа?