使用PowerShell,我想读取按键的值,而无需用户按Enter键.例如,如果用户按下"1",我希望PowerShell脚本在没有"输入"的情况下立即对选择做出反应.
我的研究发现了ReadKey,
$ input = $ Host.UI.RawUI.ReadKey('IncludeKeyDown');
但是ReadKey在字符串中返回的信息比我要求的要多得多:
72,H,0,真
虽然我可以从这个字符串解析按键,但我更喜欢更直接的选择.有人存在吗?
Goy*_*uix 10
也许您可以澄清一点 - 但ReadKey返回KeyInfo对象而不是字符串.KeyInfo包含VirtualKeyCode,Character,ControlKeyState和KeyDown成员 - 输出字符串中的所有字段.事实上,看起来PowerShell刚刚在输出示例中调用了.ToString()方法.您可能希望查看该Character属性以找到您想要的角色.考虑以下示例,我按下1:
$key = $Host.UI.RawUI.ReadKey()
if ($key.Character -eq '1') {
"Pressed 1"
}
Run Code Online (Sandbox Code Playgroud)
$Host.UI.RawUI.ReadKey('IncludeKeyDown');
关于Goyuix的使用答案应标记为正确答案。
我发现$Host.UI.RawUI.ReadKey相当长并且想使用[console]。
但这是一个错误的决定。这是一个警告。有些人可能知道如何正确使用它。
键将为您提供按某些键的功能
此外,类似的外观[console]::ReadKey将是关键属性。
$key = [console]::ReadKey()
if ($key.Key -eq 'D1') {
"Pressed 1"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7821 次 |
| 最近记录: |