Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Cmdlets sollten eine Bestätigung anfordern, wenn es darum geht, eine Änderung am System vorzunehmen, das sich außerhalb der Windows PowerShell-Umgebung befindet. Wenn ein Cmdlet z. B. ein Benutzerkonto hinzufügen oder einen Prozess beenden soll, sollte das Cmdlet eine Bestätigung des Benutzers erfordern, bevor es fortgesetzt wird. Wenn ein Cmdlet dagegen eine Windows PowerShell-Variable ändern soll, muss das Cmdlet keine Bestätigung erfordern.
Um eine Bestätigungsanforderung zu stellen, muss das Cmdlet angeben, dass es Bestätigungsanforderungen unterstützt, und es muss die System.Management.Automation.Cmdlet.ShouldProcess und System.Management.Automation.Cmdlet.ShouldContinue (optional) aufrufen, um eine Bestätigungsanforderungsmeldung anzuzeigen.
Unterstützen von Bestätigungsanforderungen
Um Bestätigungsanforderungen zu unterstützen, muss das Cmdlet den SupportsShouldProcess
Parameter des Cmdlet-Attributs auf true
festlegen. Dadurch werden die von Windows PowerShell bereitgestellten parameter Confirm
und WhatIf
Cmdlets aktiviert. Mit dem parameter Confirm
kann der Benutzer steuern, ob die Bestätigungsanforderung angezeigt wird. Mit dem parameter WhatIf
kann der Benutzer bestimmen, ob das Cmdlet eine Meldung anzeigen oder seine Aktion ausführen soll. Fügen Sie die Parameter Confirm
und WhatIf
nicht manuell zu einem Cmdlet hinzu.
Das folgende Beispiel zeigt eine Cmdlet-Attributdeklaration, die Bestätigungsanforderungen unterstützt.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Aufrufen der Bestätigungsanforderungsmethoden
Rufen Sie im Cmdlet-Code die System.Management.Automation.Cmdlet.ShouldProcess-Methode auf, bevor der Vorgang ausgeführt wird, der das System ändert. Entwerfen Sie das Cmdlet so, dass, wenn der Aufruf einen Wert von false
zurückgibt, der Vorgang nicht ausgeführt wird und das Cmdlet den nächsten Vorgang verarbeitet.
Aufrufen der ShouldContinue-Methode
Die meisten Cmdlets fordern die Bestätigung nur mithilfe der System.Management.Automation.Cmdlet.ShouldProcess-Methode an. In einigen Fällen ist jedoch möglicherweise eine zusätzliche Bestätigung erforderlich. Ergänzen Sie in diesen Fällen den System.Management.Automation.Cmdlet.ShouldProcess Aufruf mit einem Aufruf der System.Management.Automation.Cmdlet.ShouldContinue-Methode. Auf diese Weise kann das Cmdlet oder der Anbieter den Umfang der Ja genauer steuern, um alle Antwort auf die Bestätigungsaufforderung zu erhalten.
Wenn ein Cmdlet die System.Management.Automation.Cmdlet.ShouldContinue-Methode aufruft, muss das Cmdlet auch einen Force
Switch-Parameter bereitstellen. Wenn der Benutzer Force
angibt, wenn der Benutzer das Cmdlet aufruft, sollte das Cmdlet weiterhin System.Management.Automation.Cmdlet.ShouldProcessaufrufen, aber er sollte den Aufruf von System.Management.Automation.Cmdlet.ShouldContinueumgehen.
System.Management.Automation.Cmdlet.ShouldContinue löst eine Ausnahme aus, wenn sie aus einer nicht interaktiven Umgebung aufgerufen wird, in der der Benutzer nicht aufgefordert werden kann. Durch das Hinzufügen eines Force
Parameters wird sichergestellt, dass der Befehl weiterhin ausgeführt werden kann, wenn er in einer nicht interaktiven Umgebung aufgerufen wird.
Das folgende Beispiel zeigt, wie sie System.Management.Automation.Cmdlet.ShouldProcess und System.Management.Automation.Cmdlet.ShouldContinueaufrufen.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
Das Verhalten eines System.Management.Automation.Cmdlet.ShouldProcess Aufrufs kann je nach Umgebung variieren, in der das Cmdlet aufgerufen wird. Durch die Verwendung der vorherigen Richtlinien wird sichergestellt, dass sich das Cmdlet unabhängig von der Hostumgebung konsistent mit anderen Cmdlets verhält.
Ein Beispiel für das Aufrufen der System.Management.Automation.Cmdlet.ShouldProcess-Methode finden Sie unter How to Request Confirmations.
Angeben der Auswirkungsebene
Wenn Sie das Cmdlet erstellen, geben Sie die Auswirkungsebene (schweregrad) der Änderung an. Legen Sie dazu den Wert des ConfirmImpact
Parameters des Cmdlet-Attributs auf "High", "Medium" oder "Low" fest. Sie können einen Wert für ConfirmImpact
nur angeben, wenn Sie auch den SupportsShouldProcess
-Parameter für das Cmdlet angeben.
Für die meisten Cmdlets müssen Sie nicht explizit ConfirmImpact
angeben. Verwenden Sie stattdessen die Standardeinstellung des Parameters, der mittel ist. Wenn Sie ConfirmImpact
auf "Hoch" festlegen, wird der Vorgang standardmäßig bestätigt. Reservieren Sie diese Einstellung für stark störende Aktionen, z. B. das Neuformatieren eines Festplattenvolumes.
Aufrufen von Nichtbestätigungsmethoden
Wenn das Cmdlet oder der Anbieter eine Nachricht senden, aber keine Bestätigung anfordern muss, kann es die folgenden drei Methoden aufrufen. Vermeiden Sie die Verwendung der System.Management.Automation.Cmdlet.WriteObject Methode zum Senden von Nachrichten dieser Typen, da System.Management.Automation.Cmdlet.WriteObject Ausgabe mit der normalen Ausgabe Ihres Cmdlets oder Anbieters bestimmt ist, wodurch das Schreiben von Skripts erschwert wird.
Um den Benutzer zu warnen und mit dem Vorgang fortzufahren, kann das Cmdlet oder der Anbieter die System.Management.Automation.Cmdlet.WriteWarning-Methode aufrufen.
Um zusätzliche Informationen bereitzustellen, die der Benutzer mithilfe des
Verbose
-Parameters abrufen kann, kann das Cmdlet oder Anbieter die System.Management.Automation.Cmdlet.WriteVerbose-Methode aufrufen.Um Details auf Debugebene für andere Entwickler oder produktsupport bereitzustellen, kann das Cmdlet oder Anbieter die System.Management.Automation.Cmdlet.WriteDebug-Methode aufrufen. Der Benutzer kann diese Informationen mithilfe des
Debug
Parameters abrufen.
Cmdlets und Anbieter rufen zuerst die folgenden Methoden auf, um eine Bestätigung anzufordern, bevor sie versuchen, einen Vorgang auszuführen, der ein System außerhalb von Windows PowerShell ändert:
Dazu rufen sie die System.Management.Automation.Cmdlet.ShouldProcess-Methode auf, die den Benutzer auffordert, den Vorgang basierend darauf zu bestätigen, wie der Benutzer den Befehl aufgerufen hat.