询问者
【教程】Exchange Scripting Agent

常规讨论
-
在Exchange论坛中经常有用户会问:在新建一个邮箱后,如何让Exchange自动进行另一个操作?比如,如何在新建一个邮箱后给此邮箱自动发送一封欢迎邮件。如以下部分案例:
自动发送欢迎邮件
新建邮箱默认时区问题
如何更改exchange2010邮件用户创建时默认数据库和组织单位?exchange2010sp3 取消默认垃圾邮件检测问题
这类需求实则上是希望扩展Exchange命令行的功能,提高管理与维护效率。要实现这种需求,需要我们借助 Exchange Scripting Agent。【功能介绍】
以下文字摘录自TechNet官方文章——Understanding the Scripting Agent:
“通过借助Scripting Agent,我们可以在Exchange服务器执行命令时,插入自己的脚本编程逻辑。使用Scripting Agent, 我们可以添加条件,覆盖现有的参数值,以及生成特定的报告等等。”
需要提示的是,Scripting Agent默认情况下是不开启的,我们需要手动开启它。另外,当Scripting Agent被开启后,每次运行命令,都会唤醒Scripting Agent。当符合条件时,预先设置的脚本就会被执行。运行命令方式包括直接打开EMS运行命令,或者使用Exchange 的服务以及管理平台(EMC或EAC)运行命令。
【使用方法】1. 在<installation path>\Bin\CmdletExtensionAgents\路径下找到ScriptingAgentConfig.xml.sample这个文件。
2. 使用记事本打开并清空里面的内容,然后将写好的脚本复制进去。
3. 将.sample文件在原路径下另保存为ScriptingAgentConfig.xml,并复制到每一台Exchange服务器。
4. 启用脚本代理,运行如下命令:Enable-CmdletExtensionAgent "Scripting Agent"
5. 测试Scripting Agent是否已经生效。【应用案例】
【案例1】新建邮箱时,自动关闭pop和imap功能:
1. 脚本内容:
<?xml version="1.0" encoding="UTF-8"?> <Configuration version="1.0"> <Feature Name="MailboxProvisioning" Cmdlets="New-Mailbox"> <ApiCall Name="OnComplete"> If($succeeded) { $Name=$provisioningHandler.UserSpecifiedParameters["Name"] Set-CasMailbox -Identity $Name -ImapEnabled $false -POPEnabled $false } </ApiCall> </Feature> </Configuration>
2. 测试截图
【案例2】新建邮箱时,自动设置时区。
1. 脚本内容:
<?xml version="1.0" encoding="utf-8" ?> <Configuration version="1.0"> <Feature Name="MailboxProvisioning" Cmdlets="New-Mailbox"> <Apicall Name="OnComplete"> If ($succeeded) { $Alias=$provisioningHandler.UserSpecifiedParameters["Alias"] $Mailbox=Get-Mailbox $Alias Set-MailboxRegionalConfiguration -Identity $Mailbox -Language zh-cn -TimeZone "China Standard Time" -LocalizeDefaultFolderName } </Apicall> </Feature> </Configuration>
2. 测试截图:
初次登陆OWA,发现不需要再设置时区。
【案例3】新建邮箱或对AD用户启用邮件功能时,自动发送欢迎邮件。
1. 需要我们事先创建好欢迎邮件的模板,并在指定路径下保存为.html的文件。
模板内容如下:1> 在Outlook中创建模板
2> 点击上图中的“文件”,然后点击“另存为”,会弹出下图所示的对话框。命名文件,并选择保存类型为HTML。
2. 脚本内容:
<?xml version="1.0" encoding="UTF-8"?> <Configuration version="1.0"> # Script to send new email starts here <Feature Name="Welcome Email" Cmdlets="New-Mailbox,Enable-Mailbox"> <ApiCall Name="OnComplete"> if($succeeded) { if ($provisioningHandler.TaskName -eq "New-Mailbox") { $tempmsg= [string] (get-content ("c:\shared\WelcomeMSG.htm")) # Picking Primary SMTP address,saving to $pSMTP to send email. $Ualias=$provisioningHandler.UserSpecifiedParameters["Alias"] $pSMTP = (get-mailbox $Ualias | select-object PrimarySMTPAddress | Format-Wide | Out-String ).trim() } elseif ($provisioningHandler.TaskName -eq "Enable-Mailbox") { $tempmsg= [string] (get-content ("c:\shared\WelcomeMSG.htm")) # Picking Primary SMTP address,saving to $pSMTP to send email. $eUalias=$provisioningHandler.UserSpecifiedParameters["Alias"] $pSMTP = (get-mailbox $eUalias | select-object PrimarySMTPAddress | Format-Wide | Out-String ).trim() } # Please give the correct HUB serve IP address in the following line. $HUBServer="192.168.2.51" $EMail =new-object net.mail.mailmessage $HUBTask = new-object net.mail.smtpclient($HUBServer) # Email with attachment will be sent from the address given in the following line. $EMail.From="administrator@contoso.com" # Email with attachment will be sent to the address given in the following line. $EMail.To.add($pSMTP) # Email Subject and Body details are specified in following lines $EMail.Subject="Welcome to Contoso IT !!!" $EMail.Body= $tempmsg $Email.IsBodyHtml = $true $HUBTask.send($EMail) } </ApiCall> </Feature> # Script to send new email ends here </Configuration>
注:$tempmsg中的路径以及$HUBServer中的IP地址请根据环境自行修改,$EMail.From和邮件模板中的发件人地址要保持一致。
如果帖子有帮到您的话,请点击左上方“投票”按钮。这将帮到阅读到这个帖子的其他用户。
- 已更改类型 ForumFAQModerator 2018年11月27日 8:36
- 已编辑 ForumFAQModerator 2018年12月21日 5:45
全部回复
-
3. 测试截图:
1) 新建邮箱:
2) 启用邮件功能
【温馨提示】
如果您在使用Exchange Scripting Agent的过程中有任何问题,欢迎点击左上方的“提出问题”,创建一个问题贴,我们将尽力帮您解答。
【参考文档】
- https://blogs.technet.microsoft.com/rmilne/2014/06/24/exchange-scripting-agent-the-power-of-script/
- https://blogs.technet.microsoft.com/sukum/2014/07/10/send-welcome-email-to-new-mailbox-new-users/
如果帖子有帮到您的话,请点击左上方“投票”按钮。这将帮到阅读到这个帖子的其他用户。
- 已编辑 ForumFAQModerator 2018年11月27日 8:51