Приходит в компанию новый человек, и сразу у него возникает множество вопросов по внутренним порядкам и устоям. Хорошо, если кадровая служба отвечает на них. Но чаще коллегам приходится рассказывать, как попасть на файловые серверы, где лежат бланки документов, какова процедура оформления отпуска и тому подобное. И в принципе это не проблема. Но как ничего не забыть, обо всем рассказать и никого не отвлекать при этом? Лучше всего — отправить приветственное письмо такому новому сотруднику, а еще лучше, если это будет сделано автоматически.
К счастью, надо сказать, в Microsoft Exchange есть служба «Exchange Scripting Agent», которая позволяет выполнять powershell-скрипты при выполнении предопределенных командлетов. А создание почтового ящика пользователя — это есть ни что иное как запуск одного из командлетов: New-Mailbox или Enable-Mailbox.
Итак, для приветствия нового сотрудника нам понадобятся три вещи: скрипт, текст приветственного письма и Exchange Server 2010/2013. Не мудрствуя лукаво, приведу инструкцию, как заставить работать этот процесс в три шага.
Этих трех действий достаточно для рассылки приветственного письма новым сотрудникам, главное — поменять переменные в начале скрипта.
В случае необходимости внесения изменений имейте в виду, что отладка внутри «Scripting Agent» — довольно неприятная процедура, так как запуск происходит скрипта в скрытом режиме, и максимум что нам дается в таком случае — возможность писать отладочную информацию в текстовый файл.
Скрипт успешно работает на Exchange 2010 уже более года. На версии 2013, к сожалению, протестировать его работу возможности не было.
К счастью, надо сказать, в Microsoft Exchange есть служба «Exchange Scripting Agent», которая позволяет выполнять powershell-скрипты при выполнении предопределенных командлетов. А создание почтового ящика пользователя — это есть ни что иное как запуск одного из командлетов: New-Mailbox или Enable-Mailbox.
Итак, для приветствия нового сотрудника нам понадобятся три вещи: скрипт, текст приветственного письма и Exchange Server 2010/2013. Не мудрствуя лукаво, приведу инструкцию, как заставить работать этот процесс в три шага.
- Для начала необходимо разместить нижеприведенный скрипт в файле "%ProgramFiles%\Microsoft\Exchange Server\V14\Bin\CmdletExtensionAgents\ScriptingAgentConfig.xml" на каждом Exchange-сервере в организации (кроме роли Edge), плюс непосредственно на тех рабочих станциях, где установлена консоль Exchange. Не забудьте сделать резервную копию имеющегося 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 = "sender@domain.local" $MessageSubject = "Welcome to out company!" $SMTPServer = "mail.domain.local" $TargetOU = "domain.local/companyusers" # Указание на просмотр всего леса 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>
- Далее нужно включить Exchange Scripting Agent с помощью команды:
Enable-CmdletExtensionAgent "Scripting Agent"
- Если консоль Exchange уже была запущена, перезапускаем её. Это необходимо, что бы консоль поняла, что теперь у нас работает Scripting Agent.
Этих трех действий достаточно для рассылки приветственного письма новым сотрудникам, главное — поменять переменные в начале скрипта.
В случае необходимости внесения изменений имейте в виду, что отладка внутри «Scripting Agent» — довольно неприятная процедура, так как запуск происходит скрипта в скрытом режиме, и максимум что нам дается в таком случае — возможность писать отладочную информацию в текстовый файл.
Скрипт успешно работает на Exchange 2010 уже более года. На версии 2013, к сожалению, протестировать его работу возможности не было.