Legen Sie den Standardwert mit Read-Host in PowerShell fest

Waqar Aslam 21 Juni 2023
  1. Übersicht Read-Host in PowerShell
  2. Verschiedene Möglichkeiten, den Standardwert der Eingabeaufforderung mit Read-Host in PowerShell festzulegen
Legen Sie den Standardwert mit Read-Host in PowerShell fest

In diesem Artikel werden wir verschiedene Möglichkeiten verstehen, den Standardwert für den Befehl Read-Host festzulegen.

Übersicht Read-Host in PowerShell

Es führt ein zeilenweises Lesen der Eingabe von der Konsole durch. Eine Eingabezeile wird der Konsole entnommen und vom Cmdlet Read-Host (stdin) gelesen.

Sie können es verwenden, um einen Benutzer in vielen Situationen um Feedback zu bitten. Mit diesem Cmdlet können Sie Benutzer nach vertraulichen Daten wie Kennwörtern fragen, da Sie die Eingabe als sichere Zeichenfolge aufbewahren können.

Read-Host begrenzt die Anzahl von 1022 Zeichen, um genau zu sein, die es als Eingabe von einem Benutzer akzeptiert. Es folgt die Syntax von Read-Host, um Eingaben entgegenzunehmen und in einer Variablen zu speichern.

$Name = Read-Host "Please enter your name."

Die Variable $Name wird jedes Mal mit dem eingegebenen Wert aktualisiert, wenn ein Wert eingegeben und die Taste Enter gedrückt wird.

Verschiedene Möglichkeiten, den Standardwert der Eingabeaufforderung mit Read-Host in PowerShell festzulegen

Erster Ansatz zum Festlegen des Standardwerts

Erstellen Sie eine Variable namens defaultPromptValue und geben Sie ihr den String-Wert Saad. Dieser Wert wird anstelle der Eingabe des Benutzers verwendet, wenn er sich dafür entscheidet, keine bereitzustellen.

$defaultPromptValue = 'Saad'

Definieren Sie eine neue Variable, promptOutput, die eine Nachricht erzeugt, die den Benutzer zur Eingabe auffordert, und verwendet den Befehl Read-Host, um diese Aktion auszuführen.

$promptOutput = Read-Host "Press space to use default value [$($defaultPromptValue)]"

Der nächste Schritt besteht darin, eine Bedingung zu implementieren, die überprüft, ob der Benutzer eine Eingabe gemacht hat. Wenn die Antwort ja ist, wird der eingegebene Wert der Variablen defaultPromptValue zugewiesen.

Beim Schreiben der Bedingung für diese Operation haben wir zwei verschiedene Möglichkeiten.

if ($promptOutput -eq "") {} else {
    $defaultPromptValue = $promptOutput
}

ODER

if (!$promptOutput -eq "") {$defaultPromptValue = $promptOutput}

Code:

$defaultPromptValue = 'Saad'
$promptOutput = Read-Host "Press space to use default value [$($defaultPromptValue)]"
if (!$promptOutput -eq "") {$defaultPromptValue = $promptOutput}

Ein weiterer Ansatz zum Festlegen des Standardwerts

Bei diesem Ansatz verlagern wir den Prozess des Empfangens von Benutzereingaben in die Bedingung, die prüft, ob der Benutzer einen Wert eingegeben hat oder nicht. So können wir besser nachvollziehen, ob der Nutzer Daten bereitgestellt hat oder nicht.

Ohne Zutun des Benutzers verwenden wir den Standardwert Saad. Wenn der Benutzer jedoch eine Eingabe anbietet, verwenden wir den in der Variablen promptOutput gespeicherten Wert.

Code:

$defaultPromptValue = 'Saad'
if (($promptOutput = Read-Host "Press enter to accept default value $defaultPromptValue") -eq '') {$defaultPromptValue} else {$promptOutput}

Letzter Ansatz zum Festlegen des Standardwerts

Dies ist die letzte, aber sicherlich nicht die unwichtigste Methode, um den Standardwert festzulegen. Es überprüft, ob die Eingabe vom Benutzer stammt, und wenn dies der Fall ist, weist es den Wert der Benutzereingabe direkt der Variablen mit dem Namen defaultPromptValue. zu.

Code:

$defaultPromptValue = 'Saad'
if ($promptOutput = Read-Host "Value [$defaultPromptValue]") { $defaultPromptValue = $promptOutput }

Auf diese Weise muss die Bedingung else nicht verwendet werden.

Waqar Aslam avatar Waqar Aslam avatar

I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.

LinkedIn