Wie man eine Eingabeaufforderung in PowerShell bestätigt

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

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.

Bestätigen Sie das Umschalten der Aufforderung in PowerShell

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.

  1. 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.

  1. 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.

PromptForChoice-Bestätigungsaufforderung in PowerShell

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website