2 votes

Arrêter un script powershell avec une combinaison de touches

J'ai essayé d'arrêter une boucle dans powershell en utilisant plusieurs clés. Je voulais quelque chose qui ne serait pas normalement ou accidentellement pressé, comme Fn-F8, ou n'importe quelle combinaison de deux touches. Je ne veux pas utiliser ctrl-c, car le programme s'exécutera en arrière-plan et il devra faire un peu de "nettoyage" à la fin. Le code que j'ai ci-dessous se termine en appuyant sur une seule touche, mais c'est tout ce que j'ai pu trouver. Merci d'avance.

$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"
    }    
}

1voto

I506dk Points 31

PSReadLine fonctionne donc, mais pas pour ma touche FN. Si j'utilise Ctrl ou autre chose, cela fonctionne bien. Mais si j'utilise la touche FN, j'obtiens l'erreur suivante : " Duplicate or invalid modifier token 'fn' for key 'F8'. "Sinon, le code ci-dessous fonctionne bien. Je pourrais bien finir par devoir utiliser Ctrl à la place.

    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..."

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X