Parameter "WhatIf", "Confirm" und "ValidateOnly"

 

Gilt für: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Letztes Änderungsdatum des Themas: 2007-06-19

Die Exchange-Verwaltungsshell ist eine leistungsstarke und flexible Verwaltungsschnittstelle. Über die Befehlszeile können Sie Ihre Infrastruktur interaktiv verwalten. Sie können Skripts erstellen und ausführen, die häufig verwendete oder komplexe Tasks automatisieren. Wenn Sie den Umgang mit der Exchange-Verwaltungsshell und der Skripterstellung erlernen, ist es unter Umständen hilfreich sich das Ergebnis eines Befehls anzeigen zu lassen, bevor dieser tatsächlich auf Daten angewendet wird. Vielleicht möchten Sie auch vor Ausführung des Befehls einen entsprechenden Hinweis erhalten. Dies Funktionalität ist besonders wichtig beim Wechsel von der Testumgebung zur Produktionsumgebung und beim Bereitstellen neuer Skripts oder Befehle.

Die Parameter WhatIf, Confirm und ValidateOnly können sowohl für erfahrende Administratoren und Skriptschreiber als auch für Administratoren, die sich erstmals mit Exchange und Skripterstellung befassen, von Nutzen sein. Diese Parameter stehen in der Exchange-Verwaltungsshell zur Verfügung. Mit ihrer Hilfe können Sie die Ausführung von Befehlen steuern und exakt anzeigen, welches Ergebnis ein Befehl liefert, bevor dieser auf Daten angewendet wird. Die Parameter WhatIf, Confirm und ValidateOnly sind besonders nützlich, wenn Sie sie mit Befehlen zur Änderung von Objekten verwenden, die über einen Filter oder den Befehl Get in einer Pipeline zurückgegeben werden. In diesem Thema werden die einzelnen Parameter beschrieben.

Wichtig

Wenn Sie die Parameter WhatIf, Confirm und ValidateOnly mit Befehlen in einem Skript verwenden, müssen Sie den entsprechenden Parameter jedem einzelnen Befehl im Skript hinzufügen und nicht der Befehlszeile, die dieses Skript aufruft.

Hinweis

Die Parameter WhatIf, Confirm und ValidateOnly werden als Schalterparameter bezeichnet. Weitere Informationen zu Schalterparametern finden Sie unter Parameter.

Parameter "WhatIf"

Der Parameter WhatIf weist den jeweiligen Befehl an, nur Objekte anzuzeigen, auf die sich der Befehl bei Ausführung auswirkt, sowie die an diesen Objekten durchgeführten Änderungen. Die Domäne ändert diese Objekte nicht wirklich. Wenn Sie den Parameter WhatIf verwenden, können Sie sehen, ob die Änderungen Ihren Erwartungen entsprechen, ohne diese Objekte wirklich zu ändern.

Wenn Sie einen Befehl mit dem Parameter WhatIf ausführen, fügen Sie diesen Parameter, wie in folgendem Beispiel gezeigt, am Ende des Befehls ein:

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

Wenn Sie diesen Beispielbefehl ausführen, wird der folgende Text von der Exchange-Verwaltungsshell zurückgegeben:

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

Sie können eine Liste der Cmdlets, die den Parameter WhatIf akzeptieren, anzeigen, indem Sie folgenden Befehl in die Exchange-Verwaltungsshell eingeben:

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

Parameter "Confirm"

Der Parameter Confirm weist den jeweiligen Befehl an, die Verarbeitung anzuhalten, bevor Änderungen durchgeführt werden. Danach werden Sie aufgefordert, die einzelnen Aktionen zu bestätigen, bevor die Verarbeitung fortgesetzt wird. Wenn Sie den Parameter Confirm verwenden, können Sie die Änderungen an Objekten schrittweise durchlaufen, um sicherzustellen, dass Änderungen nur an den gewünschten Objekten durchgeführt werden. Diese Funktion ist hilfreich, wenn Sie viele Objekte ändern und präzise Kontrolle über die Operation der Exchange-Verwaltungsshell wünschen. Es wird eine Bestätigungsaufforderung zu jedem einzelnen Objekt angezeigt, bevor dieses von der Exchange-Verwaltungsshell geändert wird.

Standardmäßig wendet die Exchange-Verwaltungsshell den Parameter Confirm automatisch auf Cmdlets mit folgenden Verben an:

  • Remove

  • Move

  • Stop

  • Clear

  • Suspend

  • Uninstall

  • Dismount

  • Disable

Wenn ein Cmdlet ausgeführt wird, das eines dieser Verben enthält, hält die Exchange-Verwaltungsshell den Befehl automatisch an und wartet auf eine Bestätigung zum Fortsetzen des Prozesses.

Wenn Sie den Parameter Confirm manuell auf einen Befehl anwenden, fügen Sie diesen Parameter, wie in folgendem Beispiel gezeigt, am Ende des Befehls ein:

Get-JournalRule | Enable-JournalRule -Confirm

Wenn Sie diesen Beispielbefehl ausführen, wird die folgende Bestätigungsaufforderung von der Exchange-Verwaltungsshell angezeigt:

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

Die Bestätigungsaufforderung bietet folgende Auswahlmöglichkeiten:

  • [J] Ja   Geben Sie J ein, um den Vorgang fortzusetzen. Der nächste Vorgang zeigt eine weitere Bestätigungsaufforderung an. [Y] Yes ist standardmäßig ausgewählt.

  • [a] Ja, alle   Geben Sie a ein, wenn der Befehl diesen und alle folgenden Vorgänge fortsetzen soll. Während der Ausführung dieses Befehls werden keinen weiteren Bestätigungsaufforderungen angezeigt.

  • [N] Nein   Geben Sie N ein, wenn der Befehl diesen Vorgang auslassen und mit dem nächsten fortfahren soll. Beim nächsten Vorgang wird eine weitere Bestätigungsaufforderung angezeigt.

  • [k] Nein, keins   Geben Sie k ein, wenn der Befehl diesen und alle folgenden Vorgänge auslassen soll.

  • [A] Anhalten   Geben Sie A ein, um die aktuelle Pipeline anzuhalten und in die Befehlszeile zurückzuwechseln. Geben Sie Beenden ein, um die Pipeline fortzusetzen.

  • [?] Hilfe   Geben Sie ? ein, um die Bestätigungsaufforderungshilfe in der Befehlszeile anzuzeigen.

Wenn Sie das Standardverhalten der Exchange-Verwaltungsshell außer Kraft setzen und die Bestätigungsaufforderung für Cmdlets mit diesem Verhalten unterdrücken möchten, können Sie den Parameter Confirm mit dem Wert $False eingeben. Beispiel:

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

In diesem Fall wird keine Bestätigungsaufforderung angezeigt.

CautionAchtung:
Der Standardwert für den Parameter Confirm ist $True. Die Exchange-Verwaltungsshell zeigt standardmäßig eine Bestätigungsaufforderung an. Wenn Sie dieses Standardverhalten der Exchange-Verwaltungsshell unterdrücken, weisen Sie den Befehl an, alle Bestätigungsaufforderungen für die Dauer des Befehls zu unterdrücken. Der Befehl verarbeitet alle Objekte, die den Befehlskriterien entsprechen, ohne Bestätigung.

Sie können eine Liste der Cmdlets, die den Parameter Confirm akzeptieren, anzeigen, indem Sie folgenden Befehl in die Exchange-Verwaltungsshell eingeben:

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

Parameter "ValidateOnly"

Der Parameter ValidateOnly weist den Befehl an, alle Bedingungen und Anforderungen, die zur Ausführung des Befehls erforderlich sind, vor einer Änderung zu überprüfen. Der Parameter ValidateOnly steht für Cmdlets zur Verfügung, deren Ausführung lange dauern kann, die mehrere Abhängigkeiten in verschiedenen Systemen beinhalten oder die sich auf wichtige Daten wie Postfächer auswirken.

Wenn Sie den Parameter ValidateOnly auf einen Befehl anwenden, führt dieser den gesamten Prozess durch. Der Befehl für die einzelnen Aktionen auf die gleiche Weise aus, wie er sie ohne ValidateOnly-Parameter durchführen würde. Er ändert dabei jedoch keines der Objekte. Wenn der Befehl den Prozess abschließt, zeigt er eine Zusammenfassung mit dem Ergebnis der Überprüfung an. Ergibt die Überprüfung, dass der Befehl erfolgreich war, können Sie den Befehl erneut ohne den Parameter ValidateOnly ausführen.

Wenn Sie einen Befehl mit dem Parameter ValidateOnly ausführen, fügen Sie diesen Parameter, wie in folgendem Beispiel gezeigt, am Ende des Befehls ein:

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

Wenn Sie diesen Beispielbefehl ausführen, wird der folgende Text von der Exchange-Verwaltungsshell zurückgegeben:

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.

Sie können eine Liste der Cmdlets, die den Parameter ValidateOnly akzeptieren, anzeigen, indem Sie folgenden Befehl in die Exchange-Verwaltungsshell eingeben:

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