Anfordern der Bestätigung von Cmdlets
Cmdlets sollten eine Bestätigung anfordern, wenn sie eine Änderung am System vornehmen möchten, das sich außerhalb der Windows PowerShell Umgebung befindet. Wenn ein Cmdlet beispielsweise ein Benutzerkonto hinzufügen oder einen Prozess beenden möchte, sollte das Cmdlet eine Bestätigung des Benutzers erfordern, bevor es fortgesetzt wird. Im Gegensatz dazu muss das Cmdlet keine Bestätigung erfordern, wenn ein Cmdlet eine Windows PowerShell Variable ändern soll.
Um eine Bestätigungsanforderung zu erstellen, muss das Cmdlet angeben, dass es Bestätigungsanforderungen unterstützt, und die Methoden System.Management.Automation.Cmdlet.ShouldProcess und System.Management.Automation.Cmdlet.ShouldContinue (optional) aufrufen, um eine Bestätigungsanforderungsmeldung anzuzeigen.
Unterstützende Bestätigungsanforderungen
Um Bestätigungsanforderungen zu unterstützen, muss das Cmdlet den SupportsShouldProcess
Parameter des Cmdlet-Attributs auf true
festlegen. Dadurch werden die Confirm
WhatIf
Cmdlet-Parameter und aktiviert, die von Windows PowerShell bereitgestellt werden. Mit Confirm
dem -Parameter kann der Benutzer steuern, ob die Bestätigungsanforderung angezeigt wird. Mit WhatIf
dem Parameter kann der Benutzer bestimmen, ob das Cmdlet eine Meldung anzeigen oder seine Aktion ausführen soll. Fügen Sie die Parameter und nicht manuell Confirm
WhatIf
zu einem Cmdlet hinzu.
Das folgende Beispiel zeigt eine Cmdlet-Attributdeklaration, die Bestätigungsanforderungen unterstützt.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Aufrufen der Methoden der Bestätigungsanforderung
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 der Vorgang nicht ausgeführt wird, wenn der Aufruf den Wert false
zurückgibt, und das Cmdlet den nächsten Vorgang verarbeitet.
Aufrufen der ShouldContinue-Methode
Die meisten Cmdlets fordern eine 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 Aufruf System.Management.Automation.Cmdlet.ShouldProcess durch einen Aufruf der System.Management.Automation.Cmdlet.ShouldContinue-Methode. Dadurch kann das Cmdlet oder der Anbieter den Bereich von Ja auf alle Antworten auf die Bestätigungsaufforderung genauer steuern.
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, wann der Benutzer das Cmdlet aufruft, sollte das Cmdlet trotzdem System.Management.Automation.Cmdlet.ShouldProcessaufrufen, aber 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 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 System.Management.Automation.Cmdlet.ShouldProcess und System.Management.Automation.Cmdlet.ShouldContinueaufgerufen werden.
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. Mithilfe der vorherigen Richtlinien können Sie sicherstellen, dass sich das Cmdlet unabhängig von der Hostumgebung konsistent mit anderen Cmdlets verhält.
Ein Beispiel für den Aufruf der System.Management.Automation.Cmdlet.ShouldProcess-Methode finden Sie unter Anfordern von Bestätigungen.
Angeben der Auswirkungsstufe
Geben Sie beim Erstellen des Cmdlets die Auswirkungsstufe (den Schweregrad) der Änderung an. Legen Sie hierzu den Wert des ConfirmImpact
Parameters des Cmdlet-Attributs auf Hoch, Mittel oder Niedrig fest. Sie können nur dann einen Wert für ConfirmImpact
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 Medium. Wenn Sie ConfirmImpact
auf Hoch festlegen, wird der Vorgang standardmäßig bestätigt. Reservieren Sie diese Einstellung für hochgradig störende Aktionen wie das Neuformatieren eines Festplattenvolumes.
Aufrufen von Nichtbestätigungsmethoden
Wenn das Cmdlet oder der Anbieter eine Nachricht senden muss, aber keine Bestätigung anfordert, kann es die folgenden drei Methoden aufrufen. Vermeiden Sie die Verwendung der System.Management.Automation.Cmdlet.WriteObject-Methode, um Nachrichten dieser Typen zu senden, da die Ausgabe von System.Management.Automation.Cmdlet.WriteObject nicht mit der normalen Ausgabe Ihres Cmdlets oder Anbieters zusammenfällt, was das Schreiben von Skripts erschwert.
Um den Benutzer zu warnen und den Vorgang fortzusetzen, kann das Cmdlet oder der Anbieter die System.Management.Automation.Cmdlet.WriteWarning-Methode aufrufen.
Um zusätzliche Informationen bereitzustellen, die der Benutzer mit dem -Parameter abrufen
Verbose
kann, kann das Cmdlet oder der Anbieter die System.Management.Automation.Cmdlet.WriteVerbose-Methode aufrufen.Das Cmdlet oder der Anbieter kann die System.Management.Automation.Cmdlet.WriteDebug-Methode aufrufen, um Details auf Debugebene für andere Entwickler oder zur Produktunterstützung bereitzustellen. Der Benutzer kann diese Informationen mit dem
Debug
-Parameter abrufen.
Cmdlets und Anbieter rufen zunächst 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 wird die System.Management.Automation.Cmdlet.Shouldprocess-Methode aufgerufen, die den Benutzer dazu auffordert, den Vorgang basierend darauf zu bestätigen, wie der Benutzer den Befehl aufgerufen hat.
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für