使用组合键停止powershell脚本
我一直在尝试使用多个键阻止powershell中的循环。我想要一些不会被正常或意外按下的东西,比如Fn-F8,或者任何两个键的组合。我不想使用ctrl-c,因为程序将在后台运行,并且在结束时必须进行一些“清理”。下面的代码只需按一个键即可结束,但这是我所能理解的。 提前谢谢使用组合键停止powershell脚本,powershell,Powershell,我一直在尝试使用多个键阻止powershell中的循环。我想要一些不会被正常或意外按下的东西,比如Fn-F8,或者任何两个键的组合。我不想使用ctrl-c,因为程序将在后台运行,并且在结束时必须进行一些“清理”。下面的代码只需按一个键即可结束,但这是我所能理解的。 提前谢谢 $continue = $true while($continue) { if ([console]::KeyAvailable) { echo "Toggle with F12";
$continue = $true
while($continue)
{
if ([console]::KeyAvailable)
{
echo "Toggle with F12";
$x = [System.Console]::ReadKey()
switch ( $x.key)
{
F8 { $continue = $false }
}
}
else
{
# Prints a loop is ended
Write-Output "1"
}
}
所以PSReadLine确实可以工作,但对于我的FN键来说不行。如果我使用Ctrl或其他方法,效果很好。但是如果我使用FN键,它会给我错误“重复或无效的修改器标记'FN'用于键'F8'。否则下面的代码工作正常。我可能最终不得不使用Ctrl键
Write-Output "Press Ctrl+F8 to quit."
$continue = $true
while($continue)
{
if ([console]::KeyAvailable)
{
Set-PSReadlineKeyHandler -Chord Ctrl+F8 -ScriptBlock {
$continue = $false
}
Break
}
else
{
Write-Output "1"
}
}
Write-Output "Exiting..."
如果您有PSReadLine,您可以尝试处理关键和弦。不确定是否可以轻松使用它来突破脚本。