none
【教程】Exchange Scripting Agent RRS feed

  • 常规讨论

  • 在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和邮件模板中的发件人地址要保持一致。


    如果帖子有帮到您的话,请点击左上方“投票”按钮。这将帮到阅读到这个帖子的其他用户。


    2018年10月19日 9:09
    版主

全部回复