模板

 

适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2007-08-29

本主题介绍如何使用 Exchange 命令行管理程序中的模板将一个对象的配置复制到另一个对象。

本主题中的示例介绍如何在使用 New-Mailbox cmdlet 和 Set-Mailbox cmdlet 创建新邮箱时使用模板。但是,您可以对很多 cmdlet 使用模板。尽管每个 cmdlet 的特定要求可能不同,但是可以对所有 cmdlet 以相同方式使用模板。

为什么模板非常有用?

在 Microsoft Exchange Server 2007 中,可以使用 Exchange 命令行管理程序管理对象,如邮箱、发送连接器以及电子邮件地址列表策略。这些对象能够包含可以配置的很多属性。例如,管理员可以配置的属性可确定电子邮件地址列表策略上的条件自定义属性,确定远程域是否允许自动答复 Internet 以及是否在发送连接器上启用 DNS 路由。

如果您想根据现有对象的配置创建新对象,则可以使用模板。当您使用模板创建新对象时,Exchange 命令行管理程序不能克隆必需的并且必须是唯一的属性。因此,必须指定必需的属性,并且在创建新对象时这些属性必须是唯一的。

让我们看看如何使用模板在创建具有以下自定义配置的 100 个邮箱时节省时间:

属性 自定义值

RetainDeletedItemsFor

30.00:00:00

ProhibitSendQuota

1GB

ProhibitSendReceiveQuota

1500MB

IssueWarningQuota

750MB

UseDatabaseQuotaDefaults

$False

UseDatabaseRetentionDefaults

$False

例如,此表中的属性就是可以使用 Exchange 命令行管理程序在邮箱上设置的属性。当使用 New-Mailbox cmdlet 创建新邮箱时,无法配置这些属性。若要配置这些属性,必须使用 Set-Mailbox cmdlet。如果不使用模板,您将必须创建每个新邮箱,然后配置其属性。使用模板,可以通过使用 Set-Mailbox cmdlet 创建一个邮箱并配置其属性。然后,可以将第一个邮箱作为模板,通过使用该模板创建其他邮箱。

note注意:
还可以使用管道传输将新的邮箱对象从 New-Mailbox cmdlet 传递到 Set-Mailbox cmdlet。Set-Mailbox cmdlet 允许您设置新邮箱的属性。使用模板的优势在于您可以使用现有对象,其配置方式与要配置的新对象完全相同。当使用现有对象时,确保在这些对象上保持一致的配置。
有关管道传输的详细信息,请参阅管道传输

Exchange 命令行管理程序如何实现模板?

Exchange 命令行管理程序在许多含有动词 NewAddEnable 的 cmdlet 上都支持 TemplateInstance 参数,从而使您可使用模板。TemplateInstance 参数接受与尝试创建的对象类型相同的对象。例如,如果使用 New-Mailbox cmdlet 创建新邮箱,则必须为 TemplateInstance 参数提供邮箱对象。有关 cmdlets 的详细信息,请参阅了解 Cmdlet。 有关对象的详细信息,请参阅结构化数据

note注意:
您可能想创建专门用于充当模板的收件人,如邮箱或启用邮件的用户。有关如何保证这些专用收件人模板的安全的详细信息,请参阅如何确保收件人模板的安全

当运行具有 TemplateInstance 参数的 cmdlet 时,从 TemplateInstance 参数中的指定对象检索到的配置将与此 cmdlet 所需参数中的指定值组合在一起。组合的配置用于创建新对象。无法使用 TemplateInstance 参数配置所需参数上的值。

note注意:
如果在运行 cmdlet 时指定一个参数及其值,则通过该参数指定的值将覆盖在模板对象上配置的值。

若要将某个对象用作模板,必须首先创建该对象,然后配置其属性。配置该对象之后,可以使用以前配置的对象作为模板来创建其他对象。例如,如果创建一个具有前面部分的表中列出的配置的新邮箱,则必须首先使用 New-Mailbox cmdlet 创建邮箱,然后使用 Set-Mailbox cmdlet 配置该邮箱对象的属性,如以下示例所示:

$Password = ConvertTo-SecureString Pass@word1 -AsPlainText -Force
New-Mailbox -Name "Kim Akers" -Database "Mailbox Database" -UserPrincipalName kim@contoso.com -Password $Password
Set-Mailbox "Kim Akers" -RetainDeletedItemsFor 30.00:00:00 -ProhibitSendQuota 1GB -ProhibitSendReceiveQuota 1500MB -IssueWarningQuota 750MB -UseDatabaseQuotaDefaults $False -UseDatabaseRetentionDefaults $False

有关如何管理邮箱的详细信息,请参阅管理用户邮箱

创建和配置要用作模板的邮箱对象之后,可以创建具有相同配置的其他邮箱对象。必须首先为要用作模板的邮箱对象分配一个变量,如以下示例所示:

$Template = Get-Mailbox "Kim Akers"

变量名称并不重要。有关变量的详细信息,请参阅用户定义的变量

选择要用作模板的邮箱对象之后,可以使用该模板创建新邮箱,如以下示例所示:

$Password = ConvertTo-SecureString Pass@word1 -AsPlainText -Force
New-Mailbox -Name "David Simpson" -Database "Mailbox Database" -UserPrincipalName david@contoso.com -Password $Password -TemplateInstance $Template

创建新邮箱之后,可以使用以下命令查看使用该模板配置的该邮箱对象的属性,以验证其是否设置正确:

Get-Mailbox "David Simpson" | Format-List Name, ProhibitSendQuota, ProhibitSendReceiveQuota, IssueWarningQuota, UseDatabaseQuotaDefaults, UseDatabaseRetentionDefaults, RetainDeletedItemsFor

Name                         : David Simpson
ProhibitSendQuota            : 1GB
ProhibitSendReceiveQuota     : 1500MB
IssueWarningQuota            : 750MB
UseDatabaseQuotaDefaults     : False
UseDatabaseRetentionDefaults : False
RetainDeletedItemsFor        : 30.00:00:00

有关 Format-List cmdlet 的详细信息,请参阅使用命令输出

希望创建多个对象时使用模板

当希望同时创建很多对象时,模板非常有用。例如,您可能想为在逗号分隔值 (CSV) 文件中列出的每个用户创建邮箱,并且对所有新邮箱应用相同的配置。通过使用 Import-CSV cmdlet 和 ForEach cmdlet,您可以从 CSV 文件中读取数据,然后为该文件中列出的每个用户创建邮箱。例如,假设您想为以下 CSV 文件中的用户创建新邮箱,并应用在 Kim Akers 邮箱对象上配置的邮箱对象属性。CSV 文件 Users.csv 包含以下信息:

Name,UPN,MailboxDatabase
Adam Bar,adam@contoso.com,Sales
Mike Ray,mike@contoso.com,Sales
Angela Barbariol,angela@contoso.com,Marketing
Chris Barry,chris@contoso.com,Marketing
Sanjay Jacob,sanjay@contoso.com,Marketing

首先,分配包含要用于模板的配置的邮箱对象,如以下示例所示:

$Template = Get-Mailbox "Kim Akers"

然后,可以使用 Import-CSVForEach cmdlet 创建邮箱:

$Password = ConvertTo-SecureString Pass@word1 -AsPlainText -Force
Import-CSV C:\Users.CSV | ForEach { New-Mailbox -Name $_.Name -UserPrincipalName $_.UPN -Database $_.MailboxDatabase -Password $Password -Template $Template }

有关 ForEach cmdlet 以及如何添加多个收件人的详细信息,请参阅以下主题: