Wie man eine Eingabeaufforderung in PowerShell bestätigt
-
Verwenden Sie den
-Confirm
-Schalter für die Bestätigungsaufforderung in PowerShell -
Verwenden Sie die
if
-Anweisung für die Bestätigungsaufforderung in PowerShell -
Verwenden Sie die
PromptForChoice()
-Methode für die Bestätigungsaufforderung in PowerShell - Verwenden Sie funktionsbasierte Ansätze für die Bestätigungsaufforderung in PowerShell
- Fazit

Die allgemeine Idee hinter der Bestätigungsaufforderung besteht darin, eine Option zu schaffen, um zwischen verschiedenen Aktionen zu wechseln. Wenn der Benutzer beispielsweise Ja
wählt, sollte das Skript fortgesetzt werden, und wenn der Benutzer Nein
auswählt, sollte das Skript beendet werden.
PowerShell kann automatisch um Bestätigung vom Benutzer bitten, bevor eine Aktion durchgeführt wird, indem der Schalter -Confirm
verwendet wird. Dieses Tutorial führt verschiedene Methoden ein, um Benutzer um Bestätigung zu bitten, bevor eine Aktion in PowerShell fortgesetzt wird.
Verwenden Sie den -Confirm
-Schalter für die Bestätigungsaufforderung in PowerShell
PowerShell hat eine Reihe von Präferenzvariablen, die seine Betriebsumgebung beeinflussen und es Ihnen ermöglichen, sein Verhalten anzupassen. $ConfirmPreference
ist eine der Präferenzvariablen, die bestimmt, ob PowerShell Sie automatisch um Bestätigung bittet, bevor ein Cmdlet oder eine Funktion ausgeführt wird.
Es hilft, um Bestätigung zu bitten, bevor Cmdlets oder Funktionen mit niedrigem, mittlerem oder hohem Risiko ausgeführt werden. Da die meisten Cmdlets und Funktionen mittleres Risiko haben, wird keine Bestätigung angefordert, wenn der Wert der Variablen auf Hoch
gesetzt ist.
$ConfirmPreference
Ausgabe:
High
Sie müssen den -Confirm
-Schalter für den Befehl verwenden, um den Benutzer um Bestätigung zu bitten. Es zwingt den Befehl dazu, die Bestätigungsaufforderung in PowerShell anzuzeigen.
Eine einfachere Möglichkeit, den -Confirm
-Schalter zu verwenden, besteht darin, ihn im Cmdlet Remove-Item
zu verwenden, was eine Bestätigungsaktion in einem einfacheren Befehl erzeugen kann. Der folgende Befehl zeigt ein Beispiel für seine Verwendung.
Befehl:
Remove-Item test.txt -Confirm
Ausgabe:
Confirm
Are you sure you want to perform this action?
Performing the operation "Remove File" on target "C:\Users\rhntm\test.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): N
In der Ausgabe zwingt der -Confirm
-Schalter PowerShell dazu, eine Bestätigungsaufforderung anzuzeigen. Diese Methode ist unkompliziert und ideal für Szenarien, in denen Sie den Benutzer um eine einfache 'Ja'
- oder 'Nein'
-Bestätigung bitten möchten.
Im GUI von PowerShell wird es so aussehen.
Verwenden Sie die if
-Anweisung für die Bestätigungsaufforderung in PowerShell
Sie können auch die if
-Anweisung verwenden und die Bedingungen angeben, um für die Benutzer fortzufahren. Zum Beispiel fragt der folgende Befehl den Benutzer nach einer Bestätigung, ob er fortfahren möchte.
Befehl:
$confirmation = Read-Host "Do you want to continue?"
if ($confirmation -eq 'y') {
Write-Host "Welcome to DelftStack."
}
Ausgabe:
Do you want to continue?: y
Welcome to DelftStack.
Das Cmdlet Read-Host
wird verwendet, um die Eingabe eines Benutzers zu lesen und die Eingabe in der Variablen $confirmation
zu speichern. Die if
-Anweisung überprüft, ob die Eingabe des Benutzers ($confirmation
) gleich 'y'
ist, und falls dies zutrifft, wird die angegebene Aktion ausgeführt.
Dieser Ansatz bietet zusätzliche Optionen zur Anpassung der Nachricht, die dem Benutzer angezeigt wird, und was passiert, wenn er eine Wahl trifft.
Verwenden Sie die PromptForChoice()
-Methode für die Bestätigungsaufforderung in PowerShell
In PowerShell können Sie die Benutzer auch zur Bestätigung mit der PromptForChoice()
-Methode auffordern. Sie zeigt einen Dialog an, der es dem Benutzer ermöglicht, eine Option aus einer Liste von Optionen auszuwählen und entsprechend seinen Entscheidungen mit der Aktion fortzufahren.
Der folgende Befehl ist ein Beispiel, das den Benutzer um eine Ja/Nein
-Eingabe bittet. Wir definieren $title
, $question
und $choices
für die Bestätigungsaufforderung.
Befehl:
$title = 'Confirm'
$question = 'Do you want to continue?'
$choices = '&Yes', '&No'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 0) {
Write-Host 'Your choice is Yes.'
}
else {
Write-Host 'Your choice is No.'
}
Diese Zeile $decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
präsentiert dem Benutzer ein Dialogfeld mit der PromptForChoice()
-Methode. In der if
-Anweisung wird überprüft, ob der Wert, der in der Variablen $decision
gespeichert ist, gleich 0
(dem Index der ersten Wahl im $choices
-Array) ist.
- Ausgabe:
Confirm
Do you want to continue?
[Y] Yes [N] No [?] Help (default is "N"): Yes
Your choice is Yes.
In der 1. Ausgabe wählt der Benutzer "Ja"
. Infolgedessen wird die Ausgabe "Ihre Wahl ist Ja."
ausgegeben.
- Ausgabe:
Confirm
Do you want to continue?
[Y] Yes [N] No [?] Help (default is "N"): No
Your choice is No.
In der 2. Ausgabe wählt der Benutzer "Nein"
, und der zweite Befehl innerhalb der Klammern wird ausgeführt. Daher wird "Ihre Wahl ist Nein."
ausgegeben.
Diese Methode bietet ein interaktiveres und anpassbares Bestätigungserlebnis, was sie für komplexe Szenarien geeignet macht.
Wenn Sie das obige Skript in der GUI-Version von PowerShell ausführen, können Sie das Bestätigungsdialogfeld anzeigen.
Verwenden Sie funktionsbasierte Ansätze für die Bestätigungsaufforderung in PowerShell
Sie können benutzerdefinierte PowerShell-Funktionen erstellen, die eine Bestätigungslogik enthalten. Dadurch können Sie die Bestätigungslogik innerhalb von Funktionen kapseln und in Ihren Skripten wiederverwenden.
Befehl:
Function Confirm-Action {
param (
[string]$Message,
[scriptblock]$Action
)
$confirmation = Read-Host $Message
if ($confirmation -eq 'y') {
& $Action
}
}
Confirm-Action -Message "Do you want to continue?" -Action {
Write-Host "Action executed."
}
Die Zeile Function Confirm-Action { ... }
definiert eine PowerShell-Funktion namens Confirm-Action
. Die Funktion nimmt zwei Parameter: $Message
und $Action
.
Diese Zeile, $confirmation = Read-Host $Message
, fordert den Benutzer zur Eingabe auf und speichert die Eingabe in der Variablen $confirmation
. Der Parameter $Message
gibt die Nachricht an, die dem Benutzer angezeigt wird.
Die if
-Anweisung überprüft, ob die Eingabe des Benutzers, die in $confirmation
gespeichert ist, dem Zeichen 'y'
entspricht.
Ausgabe:
Do you want to continue?: y
Action executed.
Wenn Sie den Befehl ausführen, fordert er den Benutzer um Bestätigung ("Möchten Sie fortfahren?"
) und führt die Aktion mit der Nachricht "Aktion ausgeführt"
aus, wenn der Benutzer 'y'
wählt.
Fazit
In PowerShell sind Bestätigungsaufforderungen unerlässlich für die Benutzerkontrolle und Sicherheit. In diesem Artikel haben wir vier Methoden untersucht, um Bestätigungsaufforderungen zu implementieren; der -Confirm
-Schalter vereinfacht grundlegende 'Ja/Nein'
-Aufforderungen, die if
-Anweisung mit Read-Host
ermöglicht Anpassungen, die PromptForChoice()
-Methode bietet erweiterte interaktive Optionen und die Verwendung funktionsbasierter Ansätze, um eine benutzerdefinierte Funktion zu erstellen, die eine Bestätigungslogik beinhaltet, um effiziente und sichere Benutzerinteraktionen in Skripten zu gewährleisten.
Wir hoffen, dass dieses Tutorial Ihnen hilft zu verstehen, wie Sie Benutzer um eine 'Ja/Nein'
-Bestätigung in PowerShell bitten können.