PowerShell で Read-Host を使用して既定値を設定する

Waqar Aslam 2023年6月21日
  1. PowerShell での Read-Host の概要
  2. PowerShell で Read-Host を使用してプロンプトの既定値を設定するさまざまな方法
PowerShell で Read-Host を使用して既定値を設定する

この記事では、Read-Host コマンドのデフォルト値を設定するさまざまな方法を理解します。

PowerShell での Read-Host の概要

コンソールからの入力を 1 行ずつ読み取ります。 入力行はコンソールから取得され、Read-Host コマンドレット (stdin) によって読み取られます。

多くの状況でユーザーにフィードバックを求めるために使用できます。 このコマンドレットを使用すると、入力をセキュリティで保護された文字列として保持できるため、ユーザーにパスワードなどの機密データを求めることができます。

Read-Hostは、ユーザーからの入力として受け入れる1022文字の数を正確に制限します。 以下は、入力を取得して変数に格納するためのRead-Hostの構文です。

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

$Name 変数は、値が入力され、Enter キーが押されるたびに、入力された値で更新されます。

PowerShell で Read-Host を使用してプロンプトの既定値を設定するさまざまな方法

デフォルト値を設定する最初のアプローチ

defaultPromptValue という変数を作成し、それに文字列値 Saad を指定します。 この値は、ユーザーが入力を提供しないことを選択した場合に、代わりに使用されます。

$defaultPromptValue = 'Saad'

ユーザーに入力を求めるメッセージを生成し、このアクションを実行するために Read-Host コマンドを使用する新しい変数 promptOutput を定義します。

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

次のステップは、ユーザーが何らかの入力を提供したかどうかを確認する条件を実装することです。 答えがはいの場合、入力された値は defaultPromptValue 変数に割り当てられます。

この操作の条件を記述する場合、2つの異なる選択肢があります。

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

また

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

コード:

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

デフォルト値を設定する別の方法

このアプローチでは、ユーザーが値を入力したかどうかを確認する条件内でユーザー入力を受け取るプロセスを再配置します。 これにより、ユーザーがデータを提供したかどうかをより適切に追跡できます。

ユーザーからのアクションがなければ、デフォルト値の Saad を使用します。 ただし、ユーザーが入力を提供する場合は、promptOutput 変数に保存されている値を使用します。

コード:

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

デフォルト値を設定する最後のアプローチ

これは、デフォルト値を設定するための最後の方法ですが、重要度が最も低い方法ではありません。 入力がユーザーからのものであることを確認し、そうである場合は、ユーザー入力の値をdefaultPromptValue.という名前の変数に直接割り当てます。

コード:

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

このように、else 条件を使用する必要はありません。

著者: Waqar Aslam
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