WhatIf、Confirm 和 ValidateOnly 开关

适用于:Exchange Server 2013

经验丰富的管理员和脚本编写者以及不熟悉 Exchange 和脚本的管理员都可以从使用 WhatIfConfirmValidateOnly 开关中受益。 这些开关使您能够控制命令运行的方式,并在命令影响数据之前准确指定命令将执行的操作。 在从测试环境转换到生产环境以及执行新的脚本或命令时,此功能非常有价值。

将 WhatIfConfirmValidateOnly 开关用于修改通过使用筛选器或管道中的 Get 命令返回的对象时,它们特别有用。 本主题将逐一介绍这些开关,并提供每个开关的一个示例命令。

重要

如果要将 WhatIfConfirmValidateOnly 开关与脚本中的命令一起使用,则必须将相应的开关添加到脚本中的每个命令,而不是在调用脚本的命令行上。

注意

WhatIfConfirmValidateOnly 称为开关参数。 有关开关参数的详细信息,请参阅 Parameters

WhatIf 开关

WhatIf 开关指示要对其应用的命令运行,但仅显示受运行命令影响的对象以及对这些对象进行的更改。 开关实际上不会更改这些对象中的任何一个。 使用 WhatIf 开关时,可以查看对这些对象所做的更改是否符合预期,而无需担心修改这些对象。

WhatIf 开关一起运行命令时,将 WhatIf 开关放在命令的末尾,如以下示例所示:

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

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

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

Confirm 开关

“确认”开关指示应用该命令以在进行任何更改之前停止处理。 然后,该命令将提示您确认每个操作,然后再继续。 使用 “确认” 开关时,可以逐步完成对对象的更改,以确保仅对要更改的特定对象进行更改。 在将更改应用于很多对象并且希望精确控制命令行管理程序的操作时,此功能很有用。 在命令行管理程序修改对象之前,系统将为每个对象显示确认提示。

默认情况下,Shell 会自动将 Confirm 开关应用于具有以下谓词的 cmdlet:

  • Clear
  • Disable
  • Dismount
  • Move
  • Remove
  • Stop
  • Suspend
  • Uninstall

当运行具有上述任一谓词的 cmdlet 时,Shell 会自动停止命令,并等待确认,然后继续处理命令。

如果要手动将 Confirm 开关应用于命令,请在命令末尾包含 Confirm 开关,如以下示例所示:

Get-JournalRule | Enable-JournalRule -Confirm

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

Confirm
Are you sure you want to perform this action?
Enabling journal rule "Litigation Journal Rule".
[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] No 到全部:键入 L 以指示命令跳过此操作和所有后续操作。

  • [S] 挂起:键入 S 以暂停当前管道并返回到命令行。 键入 “退出” 以恢复管道。

  • [?]帮助:键入 ,在命令行上显示确认提示“帮助”。

如果要替代 Shell 的默认行为并取消自动应用的 cmdlet 的确认提示,可以包含值为 的 $FalseConfirm 开关,如以下示例所示:

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

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

警告

“确认”开关的默认值为 $True。 命令行管理程序的默认行为是自动显示确认提示。 如果禁止此默认行为,请指示命令在执行期间禁止显示所有确认提示。 这样一来,该命令将处理满足该命令的条件的所有对象,而不进行确认。

ValidateOnly 开关

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

ValidateOnly 开关应用于命令时,该命令将在整个过程中运行。 命令执行每个操作,就像没有 ValidateOnly 开关一样。 但该命令不会更改任何对象。 命令完成其进程后,将显示包含验证结果的摘要。 如果验证指示命令成功,则可以再次运行命令,而无需 使用 ValidateOnly 开关。

ValidateOnly 开关一起运行命令时,会将 ValidateOnly 开关放在命令的末尾。