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 命令來傳回物件之後,使用 WhatIfConfirmValidate 參數來搭配修改該物件的命令時,這些參數會特別有用。本主題將一一說明各個參數。

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 參數之指令程式的清單,請在 Exchange 管理命令介面中輸入下列命令:

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

Confirm 參數

Confirm 參數會指示所套用的命令在進行任何變更之前停止處理。然後該命令會提示您確認每個動作之後再繼續。當您使用 Confirm 參數時,可以一一查看對物件的變更,以確定只會對您要變更的特定物件進行變更。當您要將變更套用至許多物件,又想要精確控制 Exchange 管理命令介面的操作時,此功能會很有用。在 Exchange 管理命令介面修改物件之前,會先針對每個物件顯示確認提示。

依預設,Exchange 管理命令介面會自動將 Confirm 參數套用至具有下列命令動詞的指令程式:

  • 移除

  • 移動

  • Stop

  • 清除

  • Suspend

  • Uninstall

  • Dismount

  • 停用

當含有上述命令動詞的指令程式執行時,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 管理命令介面的預設行為,並抑制其自動套用之指令程式的確認提示,您可以加入 Confirm 參數及 $False 值,如下列範例所示:

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

這樣就不會顯示確認提示。

Caution請注意:
Confirm 參數的預設值是 $True。Exchange 管理命令介面的預設行為是自動顯示確認提示。若您抑制 Exchange 管理命令介面的這個預設行為,則會指示命令抑制命令期間的所有確認提示。此命令會處理符合命令條件的所有物件,不會要求確認。

若要顯示可接受 Confirm 參數之指令程式的清單,請在 Exchange 管理命令介面中輸入下列命令:

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

ValidateOnly 參數

ValidateOnly 參數會指示所套用的命令,在您套用任何變更之前,先評估執行該作業所需的所有條件及需求。ValidateOnly 參數可用於需要長時間執行、與多個系統具有相依關係或是會影響重要資料 (例如,信箱) 的指令程式。

當您將 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 參數之指令程式的清單,請在 Exchange 管理命令介面中輸入下列命令:

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