使用组合键停止powershell脚本

使用组合键停止powershell脚本,powershell,Powershell,我一直在尝试使用多个键阻止powershell中的循环。我想要一些不会被正常或意外按下的东西,比如Fn-F8,或者任何两个键的组合。我不想使用ctrl-c,因为程序将在后台运行,并且在结束时必须进行一些“清理”。下面的代码只需按一个键即可结束,但这是我所能理解的。 提前谢谢 $continue = $true while($continue) { if ([console]::KeyAvailable) { echo "Toggle with F12";

我一直在尝试使用多个键阻止powershell中的循环。我想要一些不会被正常或意外按下的东西,比如Fn-F8,或者任何两个键的组合。我不想使用ctrl-c,因为程序将在后台运行,并且在结束时必须进行一些“清理”。下面的代码只需按一个键即可结束,但这是我所能理解的。 提前谢谢

$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,您可以尝试处理关键和弦。不确定是否可以轻松使用它来突破脚本。