WhatIf、Confirm 和 ValidateOnly 参数

 

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

上一次修改主题: 2007-06-19

Exchange 命令行管理程序是一个非常强大而灵活的管理界面。您可以使用命令行交互式管理基础结构。可以创建和运行能使常用或复杂的任务自动执行的脚本。在了解如何使用 Exchange 命令行管理程序本身、脚本或同时使用这二者时,您可能希望在命令影响数据之前查看命令的结果。您还可能想确认命令即将运行。在从测试环境转换到生产环境以及执行新的脚本或命令时,此功能尤其重要。

有经验的管理员和脚本编写者以及对 Exchange 和脚本没有经验的管理员,都可以从使用 WhatIfConfirmValidateOnly 参数中受益。Exchange 命令行管理程序中提供了这些参数。这些参数使您能够控制命令运行的方式,并在命令影响数据之前准确指定命令将执行的操作。与用于对通过使用筛选器或通过在管道中使用 Get 命令而返回的对象进行修改的命令一起使用时,WhatIfConfirmValidateOnly 参数尤其有用。本主题将逐一介绍这些参数。

important要点:
如果要在脚本命令中使用 WhatIfConfirmValidateOnly 参数,必须将合适的参数添加到脚本内的每个命令中,而不是添加到调用脚本的命令行上。
note注意:
WhatIfConfirmValidateOnly 参数称为开关参数。有关开关参数的详细信息,请参阅参数

WhatIf 参数

WhatIf 参数指示应用该参数的命令运行,但只显示运行该命令会影响到的对象以及会对这些对象进行什么更改。域实际上不会更改其中的任何对象。使用 WhatIf 参数时,可以看到将对这些对象进行的更改是否符合您的期望结果,而不必担心会修改这些对象。

使用 WhatIf 参数运行命令时,需要将 WhatIf 参数放在命令的末尾,如下例所示:

New-AcceptedDomain -Name "Contoso Domain" -DomainName "contoso.com" -WhatIf 

运行此示例命令时,Exchange 命令行管理程序将返回以下文本:

What if: Creating Accepted Domain "Contoso Domain" with Domain Name "contoso.com".

若要显示接受 WhatIf 参数的 cmdlet 列表,请在 Exchange 命令行管理程序中键入以下命令:

Get-ExCommand | Where { $_.Definition -Like "*WhatIf*" }

Confirm 参数

Confirm 参数指示应用它的命令在进行任何更改之前停止处理。然后,该命令将提示您确认每个操作,然后再继续。使用 Confirm 参数时,可以分步执行对对象的更改,以确保更改只针对想要更改的特定对象。在将更改应用于很多对象并且希望精确控制 Exchange 命令行管理程序的操作时,此功能很有用。在 Exchange 命令行管理程序修改对象之前,系统将为每个对象显示确认提示。

默认情况下,Exchange 命令行管理程序自动将 Confirm 参数应用于具有以下谓词的 cmdlet:

  • Remove

  • Move

  • Stop

  • Clear

  • Suspend

  • Uninstall

  • Dismount

  • Disable

当包含这些谓词中的任何一个谓词的 cmdlet 运行时,Exchange 命令行管理程序将自动停止执行命令,并在继续处理之前等待您确认。

Confirm 参数手动应用于命令时,请在命令的末尾包括 Confirm 参数,如下例所示:

Get-JournalRule | Enable-JournalRule -Confirm

运行此示例命令时,Exchange 命令行管理程序将返回以下确认提示:

[Y] Yes   [A] Yes to All   [N] No   [L] No to All   [S] Suspend   [?] Help   
(default is "Y"):

确认提示提供以下选择:

  • [Y] 是   键入 Y 可以指示命令继续执行该操作。下一个操作将显示另一个确认提示。[Y] Yes 是默认选项。

  • [A] 全是   键入 A 可以指示命令继续执行该操作以及所有后续操作。在此命令运行期间,将不再显示其他确认提示。

  • [N] 否   键入 N 可以指示命令跳过此操作,继续执行下一个操作。下一个操作将显示另一个确认提示。

  • [L] 全否   键入 L 可以指示命令跳过此操作以及所有后续操作。

  • [S] 挂起   键入 S 可以暂停执行当前管道并返回到该命令行。键入 Exit 可以继续执行管道。

  • [?] 帮助   键入 ? 可以在命令行上显示确认提示帮助。

如果要覆盖 Exchange 命令行管理程序的默认行为,并使自动应用确认提示的 cmdlet 禁止显示确认提示,可以包括带有值 $FalseConfirm 参数,如下例所示:

Get-JournalRule | Disable-JournalRule -Confirm:$False

这种情况下,不显示确认提示。

Caution警告:
Confirm 参数的默认值为 $True。Exchange 命令行管理程序的默认行为是自动显示确认提示。如果禁止 Exchange 命令行管理程序的此默认行为,您需要指示该命令在命令执行期间禁止显示所有确认提示。这样一来,该命令将处理满足该命令的条件的所有对象,而不进行确认。

若要显示接受 Confirm 参数的 cmdlet 列表,请在 Exchange 命令行管理程序中键入以下命令:

Get-ExCommand | Where { $_.Definition -Like "*Confirm*" }

ValidateOnly 参数

ValidateOnly 参数指示应用它的命令在应用任何更改之前先对执行该操作所需的所有条件和要求进行评估。ValidateOnly 参数可用于运行时间可能很长、对多个系统有若干依赖关系或者会影响关键数据(例如,邮箱)的 cmdlet。

ValidateOnly 参数应用到某一命令后,该命令将完成整个进程。命令执行每个操作的方式与没有 ValidateOnly 参数时的方式相同。但该命令不会更改任何对象。命令完成其进程后,将显示包含验证结果的摘要。如果验证指示命令已成功执行,您可以在不使用 ValidateOnly 参数的情况下再次运行该命令。

运行与 ValidateOnly 参数一起使用的命令时,需要将 ValidateOnly 参数放在命令的末尾,如下例所示:

Get-Mailbox "Kim Akers" | Move-Mailbox -TargetDatabase "Executive Database" -ValidateOnly

运行此示例命令时,Exchange 命令行管理程序将返回以下文本:

Identity                         : contoso.com/Users/Kim Akers
DistinguishedName                : CN=Kim Akers,CN=Users,DC=contoso,DC=com
DisplayName                      : Kim Akers
Alias                            : kim
LegacyExchangeDN                 : /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=kim
PrimarySmtpAddress               : kim@contoso.com
SourceServer                     : Win2003MS.contoso.com
SourceDatabase                   : WIN2003MS\First Storage Group\Mailbox Database
SourceGlobalCatalog              : Win2003MS.contoso.com
TargetGlobalCatalog              : Win2003MS.contoso.com
TargetDomainController           : Win2003MS.contoso.com
TargetMailbox                    :
TargetServer                     : Win2003MS.contoso.com
TargetDatabase                   : WIN2003MS\Second Storage Group\Executive Database
MailboxSize                      : 0KB
IsResourceMailbox                : False
SIDUsedInMatch                   :
SMTPProxies                      :
SourceManager                    :
SourceDirectReports              :
SourcePublicDelegates            :
SourcePublicDelegatesBL          :
MatchedTargetNTAccountDN         :
IsMatchedNTAccountMailboxEnabled :
MatchedContactsDNList            :
TargetNTAccountDNToCreate        :
TargetManager                    :
TargetDirectReports              :
TargetPublicDelegates            :
TargetPublicDelegatesBL          :
Options                          : Default
SourceForestCredential           :
TargetForestCredential           :
TargetFolder                     :
RsgMailboxGuid                   :
RsgMailboxLegacyExchangeDN       :
RsgMailboxDisplayName            :
RsgDatabaseGuid                  :
MoveType                         : IntraOrg
MoveStage                        : Validation
StartTime                        : 7/17/2006 4:39:13 PM
EndTime                          : 7/17/2006 4:39:14 PM
StatusCode                       : 0
StatusMessage                    : This mailbox can be moved to the target database.

若要显示接受 ValidateOnly 参数的 cmdlet 列表,请在 Exchange 命令行管理程序中键入以下命令:

Get-ExCommand | Where { $_.Definition -Like "*ValidateOnly*" }