【摘要】
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 命令行管理程序 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是邮件的正文,按实际填写即可。
本实验使用到的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"

Enable-CmdletExtensionAgent "Scripting Agent"
通过以下命令确认扩展代理已经开启(结果为True):
Enable-CmdletExtensionAgent "Scripting Agent"

在Exchange Management Shell通过New-Mailbox的命令新建邮箱:

启用了cmdlet扩展代理后,果然,当此新用户第一次打开此新邮箱,邮箱里已经有一封欢迎邮件,实现了只需要通过命令New-Mailbox新建邮箱,系统将会自动发送一封邮件给到这位新的员工邮箱。


启用了cmdlet扩展代理后,果然,当此新用户第一次打开此新邮箱,邮箱里已经有一封欢迎邮件,实现了只需要通过命令New-Mailbox新建邮箱,系统将会自动发送一封邮件给到这位新的员工邮箱。

Exchange的cmdlet扩展代理功能提供了邮箱管理员许多灵活变通的方法,管理员熟悉掌握Exchange的命令便可轻易修改ScriptingAgentConfig.xml文件,以达到如下而不限于以下的功能:
指定新建或启用邮箱的默认数据库;
设置邮箱的默认属性,例如邮箱大小,投递策略等;
新邮箱隶属的默认通讯组;
给邮箱创建对应的联系人;
… …
善于使用日常运维过程中对邮箱操作管理的命令,将这些命令与ScriptingAgentConfig.xml结合,将会大大提高邮箱自动化运维及管理效率。
指定新建或启用邮箱的默认数据库;
设置邮箱的默认属性,例如邮箱大小,投递策略等;
新邮箱隶属的默认通讯组;
给邮箱创建对应的联系人;
… …
善于使用日常运维过程中对邮箱操作管理的命令,将这些命令与ScriptingAgentConfig.xml结合,将会大大提高邮箱自动化运维及管理效率。