Windows PowerShell スクリプトで Read-Host コマンドレットを使用する
Read-Host コマンドレットを使用すると、スクリプトの実行中にユーザーから入力を取得できます。 スクリプトの開始を求めるときや、スクリプトで既に発生している処理の結果に基づいて、ユーザー入力を要求できます。 たとえば、Active Directory Domain Services (AD DS) ユーザー オブジェクトのクエリを実行し、取得したオブジェクトの数を表示した後、続行するか停止するかの決定をスクリプトで求めることができます。 または、スクリプトで検索する特定のイベント ID を要求することもできます。 Read-Host コマンドレットの構文は次のとおりです。
$answer = Read-Host "How many days"
前の例では、スクリプトの処理を停止し、次のようなテキストでユーザーにプロンプトを表示します。
How many days:
このプロンプトに対し、ユーザーは応答を入力して、Enter キーを押します。 ユーザーが指定した応答は、変数 $answer に格納されます。
読み取りホストの一部としてテキストを表示する場合は、常にテキストの末尾にコロン (:) が追加されます。 この動作を抑制するパラメーターはありません。 ただし、テキストを表示せずに 読み取りホスト を使用する場合は、コロンは表示されません。 次の例に示すように、 Write-Host コマンドと Read-Host を組み合わせてテキストを表示し、コロンが追加されないようにすることができます。
Write-Host "How many days? " -NoNewline
$answer = Read-Host
注
読み取りホストからの入力は 1022 文字に制限されています。
-MaskInput パラメーターまたは -AsSecureString パラメーターを使用して、プロンプトでユーザーが入力した入力をマスクできます。 どちらのパラメーターでも、ユーザーが入力した文字はアスタリスク (*) として表示されます。
MaskInput を使用すると、応答が String オブジェクトとして収集されます。
-AsSecureString を使用すると、応答が SecureString オブジェクトとして収集されます。 パスワードの設定のように、データをクリア テキストとしてメモリに格納してはならないシナリオでは、SecureString オブジェクトが必要です。