PowerShellでキーボードのキー入力を取得する

PowerShellではキーボードのキー入力を以下の書き方で取得できるようです。

[Console]::ReadKey($true)

 
これをPowerShellコンソールから実行してみると動きがわかりやすいです。

#Ctrl+C+Enterで抜けます
while($true){[Console]::ReadKey($true)}



取得できるのはConsoleKeyInfoオブジェクトで、
以下のようなプロパティを持っています。

  • KeyChar
  • Key
  • Modifiers

Modifiersがわかりにくいですが、「修飾語句」という意味で、ShiftやAltを取得します。
例えばShift+Sのキーが押された時の処理を書きたい場合に使えます。

#Ctrl+C+Enterで抜けます
while($true)
{
    $keyInfo = [Console]::ReadKey($true)
    if($keyInfo.Key -eq "S" -and $keyInfo.Modifiers -eq "Shift")
    {
        "Shift+S Pressed"
    } 
}