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
条件を使用する必要はありません。
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