Read-Host PowerShellコマンドレットを使用すると、スクリプトユーザーからの入力をインタラクティブに要求することができます。実際の世界でのRead-Host
PowerShellコマンドレットの使用方法を見てみましょう。
Read-Hostを使用して入力を要求する
Read-Host
コマンドレットは、PowerShellスクリプトで2つの機能を実行します。実行を一時停止し、入力を受け取ります。それだけです。Read-Host
は単純なコマンドレットですが、スクリプトユーザーから情報を取得する必要がある場合に便利です。
基本的に、Read-Host
コマンドレットは単にPrompt
パラメータの使用を必要とします。このPrompt
パラメータを使用すると、スクリプトユーザーに何を入力するかを示すことができます。たとえば、スクリプトがサーバー名を必要とする場合、スクリプトが実行されるときにユーザーにそれを入力するようにRead-Host
を使用することを選択するかもしれません。
以下の例では、PowerShellコンソール自体でRead-Host
を実行し、Prompt
パラメータを使用して、PowerShellがすべての実行を停止し、プロンプトメッセージを表示し、ユーザーに何を求めているのかを説明するメッセージを表示しています。

これをスクリプトに組み込みましょう。ユーザーがプロンプトで情報を入力するたびに、Read-Host
はその情報をコードに返します。出力を変数に割り当てることで、この情報を簡単にキャプチャできます。たとえば、サーバー名を要求して、そのサーバー名で何かを行いたい場合があります。そうでない場合は、ユーザーにサーバー名が本当に必要であることを警告したいかもしれません。
単純なif/then構造を使用することで、ユーザーがサーバー名を入力することを確認できます。ユーザーが入力すると、それをキャプチャして何か処理を行い、そうでない場合は警告メッセージを送信します。

パスワードの要求
スクリプト内に平文でパスワードを保存するのは良いアイデアではありません。同様に、メモリ内に平文でパスワードを保存するのも良いアイデアではありません。この問題を解決するために、PowerShellには「セキュアストリング」という概念があります。これは、暗号化された単純な文字列です。
A secure string can any kind of sensitive information; a password is a great example. What does this have to do with Read-Host
? The Read-Host
cmdlet has an AsSecureString
parameter which allows the user to not only store the output as a secure string but also to show asterisk while typing to hide your secret from prying eyes!
たとえば、他の人に知られたくない深い秘密があり、そのパスワードをソフトウェアに渡す必要があるとしましょう。下記の例では、AsSecureString
を使用しない場合、秘密が漏れてしまいます。しかし、AsSecureString
を使用すると、入力する各文字がアスタリスクに置き換えられ、出力は平文の文字列ではなくセキュアストリングとして保存されるため、秘密は安全です。

Read-Host
のドキュメントを参照するには、Microsoft Docsをご覧ください。