第13章. ユーザ対話
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
13.0 はじめに
ほとんどのスクリプトは自動的に実行されるように設計されているが、スクリプトをユーザと対話させると便利なことがよく発見される。
注
ユーザから入力を得る最良の方法は、スクリプトや関数の引数やパラメータを使うことである。これにより、ユーザはスクリプトの実行に立ち会うことなく、スクリプトを実行することができる!
スクリプトにインタラクティブな利点がある(または必要である)場合、PowerShellはさまざまな可能性を提供する。単純にキー入力を待ったり、入力を促したり、よりリッチな選択肢ベースのプロンプトを表示したりすることができる。
ユーザとの対話はユーザ入力だけではない。入力機能に加え、PowerShellは出力もサポートしている。単純な文字列の表示から、より詳細な進捗報告やUIフレームワークとのインタラクションまで。
13.1 ユーザ入力の行を読み取る
問題
スクリプトの中でユーザからの入力を使いたい。
解決策
ユーザ入力を取得するには、 コマンドレットを使用する:Read-Host
PS > $directory = Read-Host "Enter a directory name" Enter a directory name: C:\MyDirectory PS > $directory C:\MyDirectory
ディスカッション
Read-Host コマンドレットは、ユーザから 1 行の入力を読み取る。入力に機密データが含まれている場合、コマンドレットは パラメータをサポートし、この入力を として読み取る。-AsSecureString SecureString
ユーザ入力が日付、時刻、または数値を表す場合、ほとんどのカルチャではこれらのデータ型の表現が異なることに注意する。カルチャを意識したスクリプトの書き方については、レシピ13.6を参照のこと。
Read-Host コマンドレットの詳細については、次のようにタイプする。 Get-Help Read-Host.グラフィカル プロンプトを通してユーザ入力を読み取る例については、本書のコード例に含まれているRead-InputBox スクリプトを参照のこと。これらの例の入手方法については、「コード例の使用」を参照のこと。
こちらも参照のこと。
13.2 ユーザ入力のキーを読み取る
問題
スクリプトはユーザから1回のキー入力を得たい。
解決策
ほとんどのメソッドでは、キーの読み取りには :[Console]::ReadKey()
PS > $key = [Console]::ReadKey($true)
PS > $key
KeyChar Key Modifiers
------- --- ---------
h H Alt
高度にインタラクティブな使用(例えば、キーダウン・キーアップを気にする場合)には、これを使う:
PS > $key = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") PS > $key VirtualKeyCode Character ControlKeyState KeyDown -------------- --------- --------------- ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access