どのキーがどういう値を持っているのかを、連続的にコンソールに表示して確かめたい場合、以下のコマンドで行けます。
while($True){$Key=([Console]::ReadKey()).key; Write-Host (" => "+$Key);}
キー入力待機中に何でもいいからキーを入力すると(F11だとPowerShellが最大化・戻る表示になるので注意)、結果が返されます。
これをwhileでループさせて連続的に表示するようにしています。
終了する時は、Ctrlキー+Cキー+Enterキーの3キー同時押しです。
C:¥>while($True){$Key=([Console]::ReadKey()).key; Write-Host (" => "+$Key);}
=> F1
=> F2
=> F3
=> F4
=> F5
=> F6
=> F7
=> F8
=> F9
=> F10
1 => D1
2 => D2
3 => D3
4 => D4
5 => D5
6 => D6
7 => D7
8 => D8
9 => D9
0 => D0
- => OemMinus
^ => Oem7
\ => Oem5
=> Backspace
=> Tab
q => Q
w => W
e => E
r => R
t => T
y => Y
u => U
i => I
o => O
p => P
@ => Oem3
[ => Oem4
=> Enter
a => A
s => S
d => D
f => F
g => G
h => H
j => J
k => K
l => L
; => OemPlus
: => Oem1
] => Oem6
z => Z
x => X
c => C
v => V
b => B
n => N
m => M
, => OemComma
. => OemPeriod
/ => Oem2
\ => Oem102
=> LeftWindows
=> Spacebar
=> Applications
=> LeftArrow
=> UpArrow
=> DownArrow
=> RightArrow
ちなみに、[Console]::ReadKey()の::というのは、Consoleクラスのスタティックメソッド(インスタンス化せずに使えるメソッド)なのですが、どんな種類のスタティックメソッドがあるのかを知りたい時は以下のコマンドでOKです。
[Console] | get-member -static -membertype method
TypeName: System.Console
Name MemberType Definition
---- ---------- ----------
Beep Method static void Beep(), static void Beep(int frequency, int duration)
Clear Method static void Clear()
Equals Method static bool Equals(System.Object objA, System.Object objB)
MoveBufferArea Method static void MoveBufferArea(int sourceLeft, int sourceTop, int sourceWidth, int sourceH...
OpenStandardError Method static System.IO.Stream OpenStandardError(), static System.IO.Stream OpenStandardError...
OpenStandardInput Method static System.IO.Stream OpenStandardInput(), static System.IO.Stream OpenStandardInput...
OpenStandardOutput Method static System.IO.Stream OpenStandardOutput(), static System.IO.Stream OpenStandardOutp...
Read Method static int Read()
ReadKey Method static System.ConsoleKeyInfo ReadKey(), static System.ConsoleKeyInfo ReadKey(bool inte...
ReadLine Method static string ReadLine()
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, System.Object objB)
ResetColor Method static void ResetColor()
SetBufferSize Method static void SetBufferSize(int width, int height)
SetCursorPosition Method static void SetCursorPosition(int left, int top)
SetError Method static void SetError(System.IO.TextWriter newError)
SetIn Method static void SetIn(System.IO.TextReader newIn)
SetOut Method static void SetOut(System.IO.TextWriter newOut)
SetWindowPosition Method static void SetWindowPosition(int left, int top)
SetWindowSize Method static void SetWindowSize(int width, int height)
Write Method static void Write(string format, System.Object arg0), static void Write(string format,...
WriteLine Method static void WriteLine(), static void WriteLine(bool value), static void WriteLine(char...
StaticメソッドはC#言語の知識がそのまま生かせるので直感的に使えるのがとてもありがたいですが、入力がとても長くなりがちなので、コンソールから入力するのはちょっと・・・という悩みがありますね。