使用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"
}