使用PowerShell,我想读取按键发生的值,而不必按用户输入键。例如,如果用户按'1',我希望PowerShell脚本立即对选择作出反应,而不需要'输入'。在PowerShell中读取单个按键
我的研究已经转向了ReadKey,
$输入= $ Host.UI.RawUI.ReadKey( 'IncludeKeyDown');
但ReadKey字符串中返回更多的信息比我要求:
72,H,O,真
虽然我可以从这个字符串解析按键,我我更喜欢更直接的选择。有一个存在吗?
使用PowerShell,我想读取按键发生的值,而不必按用户输入键。例如,如果用户按'1',我希望PowerShell脚本立即对选择作出反应,而不需要'输入'。在PowerShell中读取单个按键
我的研究已经转向了ReadKey,
$输入= $ Host.UI.RawUI.ReadKey( 'IncludeKeyDown');
但ReadKey字符串中返回更多的信息比我要求:
72,H,O,真
虽然我可以从这个字符串解析按键,我我更喜欢更直接的选择。有一个存在吗?
也许你可以澄清一下 - 但ReadKey返回一个KeyInfo对象不是一个字符串。 KeyInfo
包含VirtualKeyCode,Character,ControlKeyState和KeyDown成员 - 按顺序输出字符串中的所有字段。实际上,它看起来像PowerShell在输出示例中刚才调用了.ToString()方法。你可能会想看看Character
属性来找到你想要的角色。看看下面的例子,我按:
$key = $Host.UI.RawUI.ReadKey()
if ($key.Character -eq '1') {
"Pressed 1"
}
关于使用$Host.UI.RawUI.ReadKey('IncludeKeyDown');
Goyuix answer应标记为正确的答案。
我发现$Host.UI.RawUI.ReadKey
相当长,想用[console]
。
但是看起来类似[console]::ReadKey
它会Key属性。
$key = [console]::ReadKey()
if ($key.Key -eq '1') {
"Pressed 1"
}