【摘要】
Cmdlet 扩展代理是在 cmdlet 运行时,由 Exchange 2013 cmdlet 调用的 Microsoft Exchange Server 2013 中的组件。顾名思义,cmdlet 扩展代理可扩展 cmdlet 的功能,通过帮助处理数据或执行其他基于 cmdlet 要求的操作来调用这些功能。Cmdlet 扩展代理在任何服务器角色上均可用。
这些代理可以修改、替换或扩展 Exchange 命令行管理程序 cmdlet 的功能。代理可以执行以下操作:为所需参数提供值(该值未在命令上提供)、覆盖由用户提供的值、在 cmdlet 运行时执行其他 cmdlet 工作流以外的操作等。
只能通过 Exchange 2013 和 Microsoft Exchange Server 2010 cmdlet 来调用 cmdlet 扩展代理。Exchange 2007 cmdlet 以及由其他 Microsoft 和第三方产品提供的 cmdlet 无法调用 cmdlet 扩展代理。脚本也无法直接调用 cmdlet 扩展代理。但是,如果脚本包含 Exchange 2013 cmdlet,则这些 cmdlet 可继续调用 cmdlet 扩展代理。
【正文】
本文演示Exchange 2013通过cmdlet扩展代理功能扩展新建及启用用户邮箱的功能,当新建或启用用户邮箱后,系统将自动发送一封邮件(本文以欢迎邮件为例,场景:可用于为新入职员工创建邮箱)到此新的邮箱。
一 环境准备
1.1 ScriptingAgentConfig.xml文件修改
Exchange 服务器本来已经有ScriptingAgentConfig.xml的模板文件,其存放在Exchange安装路径\Bin\CmdletExtensionAgents目录下,文件名为ScriptingAgentConfig.xml.sample,我们可以直接对此文件修改,当然我的建议是最好在此目录下复制一份,内容按实际需求修改,文件名修改为ScriptingAgentConfig.xml。
本实验使用到的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) {
# Waiting for synchronization after mailbox has been created.
Set-ADServerSettings -ViewEntireForest $true
$Name= $ProvisioningHandler.UserSpecifiedParameters["Name"]
$WaitTime = 0
while (!$Mailbox -and $WaitTime -le 18)
{
Start-Sleep -Seconds 10
$Mailbox = Get-Mailbox $Name -ErrorAction 0
$WaitTime++
}
If ($Mailbox)
{
$SMTPServer = (Get-TransportServer -WA 0)[0].Name
$admin = “oa\anson”
$EncryptPwd = ConvertTo-SecureString "1qaz@WSX" -AsPlainText -Force
$Cre = New-Object System.Management.Automation.PSCredential($admin,$EncryptPwd)
$From = "Anson@oa.kfzx.local"
$To = $Mailbox.PrimarySmtpAddress
$Subject = "Welcome Email!"
$Body = "Welcome to Join xxx Company!"
#Send An Welcome Email to the new mailbox.
Send-MailMessage -From $From -To $To -Body $Body -Subject $Subject -Credential $Cre -SmtpServer $SMTPServer
}
}
</ApiCall>
</Feature>
</Configuration>
上述xml文件的内容实现的功能是当管理员新建或用户邮箱时,系统自动发送一封邮件到此新的邮箱,供需要使用到扩展代理功能的管理员参考,上述代码中部分内容需要按生产环境修改的地方,下面将会一一讲述:
$admin为邮箱管理员的域账户;
$EncryptPwd中的1qaz@WSX是邮箱管理员的密码;
$From是邮箱管理员的邮箱地址;
$Subject是邮件的标题,按实际填写即可;
$Body是邮件的正文,按实际填写即可。
1.2 启用cmdlet扩展代理功能
在Exchange Management Shell中通过以下命令启用cmdlet扩展代理:
Enable-CmdletExtensionAgent "Scripting Agent"
通过以下命令确认扩展代理已经开启(结果为True):
Enable-CmdletExtensionAgent "Scripting Agent"
二 结果验证
在Exchange Management Shell通过New-Mailbox的命令新建邮箱:
启用了cmdlet扩展代理后,果然,当此新用户第一次打开此新邮箱,邮箱里已经有一封欢迎邮件,实现了只需要通过命令New-Mailbox新建邮箱,系统将会自动发送一封邮件给到这位新的员工邮箱。
三 更多扩展功能简述
Exchange的cmdlet扩展代理功能提供了邮箱管理员许多灵活变通的方法,管理员熟悉掌握Exchange的命令便可轻易修改ScriptingAgentConfig.xml文件,以达到如下而不限于以下的功能:
指定新建或启用邮箱的默认数据库;
设置邮箱的默认属性,例如邮箱大小,投递策略等;
新邮箱隶属的默认通讯组;
给邮箱创建对应的联系人;
… …
善于使用日常运维过程中对邮箱操作管理的命令,将这些命令与ScriptingAgentConfig.xml结合,将会大大提高邮箱自动化运维及管理效率。