Comment utiliser la commande Exit PowerShell et ses amis

Avez-vous déjà pensé, « Quel est le meilleur moyen de terminer un script ou de quitter une commande dans PowerShell ? » La session PowerShell se fermera-t-elle avec la commande exit PowerShell ? Comment retourner des codes de sortie personnalisés ? Eh bien, vous avez de la chance !

Dans ce guide, vous trouverez des réponses à ces questions et bien plus encore. Apprenez toutes les façons de quitter un script ou une session PowerShell.

Préparez-vous à terminer certaines sessions et scripts PowerShell !

Prérequis

Pour suivre, assurez-vous d’avoir Windows PowerShell ou PowerShell Core installé sur votre machine. Les exemples dans cet article utiliseront PowerShell 7.1.4.

Terminer la console et les scripts avec la commande exit PowerShell

Plongeons dans ce tutoriel et couvrons d’abord le mot-clé exit, l’un des nombreux mots réservés dans PowerShell. Un mot réservé est un ensemble de caractères intégré à PowerShell qui effectue une action. Pour le mot-clé exit, l’action est de faire sortir PowerShell d’une session PowerShell.

Pratiquons ! Ouvrez une session console PowerShell, tapez exit, et appuyez sur la touche Entrée. La console PowerShell se fermera immédiatement.

Ce mot-clé peut également quitter un script plutôt que la session console. Inclure le mot-clé exit dans un script et exit termine uniquement le script et non pas l’ensemble de la session console à partir de laquelle le script est exécuté.

Copiez et collez le code ci-dessous dans le bloc-notes et enregistrez le script sous le nom test.ps1 dans le répertoire C:\Temp. Exécutez le fichier de script PowerShell en exécutant la commande .\text.ps1 comme indiqué dans la capture d’écran ci-dessous. Remarquez que plutôt que de fermer la session PowerShell, PowerShell termine le script et renvoie le contrôle à l’invite de la session PowerShell actuelle.

# test.ps1
Write-Host "Quick! Read this before the PowerShell session closes!!"
Start-Sleep -Seconds 2
Exit
The exit keyword stopped the script execution, but the console is still running

Réception et fourniture de commentaires avec des codes de sortie

La commande exit est utile dans les situations où vous avez besoin qu’un script ou une fonction exécute du code et se termine. Mais vous n’obtenez aucune indication si le script s’est exécuté avec succès ou non.

Lorsque PowerShell exécute la dernière commande d’un script, il stocke le code de sortie de cette dernière commande dans la variable $LASTEXITCODE .

Il existe deux codes de sortie par défaut:

PowerShell ne vous restreint pas aux codes de sortie 0 et 1. PowerShell vous permet de retourner des codes de sortie personnalisés, tant qu’ils sont des entiers.

La plage de valeurs pour le code de sortie dépend de la plate-forme. Sur Windows, tous les entiers signés sur 32 bits sont autorisés. Sur Unix, seuls les entiers positifs sur 8 bits sont autorisés.

Pour quitter PowerShell avec un code de sortie personnalisé, vous pouvez fournir le code de sortie en tant qu’argument pour le mot-clé exit.

Copiez-collez le code ci-dessous dans le fichier existant test.ps1 et exécutez le script avec la commande .\Test.ps1. Vérifiez le contenu de la variable $LASTEXITCODE. En demandant à PowerShell de quitter avec un code de sortie 55, il l’a fait, comme vous pouvez le voir ci-dessous.

Function foo {
    Write-Output "This foo function will be shown"
    Exit 55 # < -- Utilisation d'un code de sortie personnalisé
}

foo
Returning a custom exit code

Sortir des boucles avec Break

Il y aura des moments où le comportement exit n’est pas acceptable, comme quitter une fonction. Voyons comment le mot-clé break aide.

Le mot-clé break fait arrêter une boucle PowerShell. Après un break, le code continue à s’exécuter à la prochaine itération.

Les pauses sont utiles dans les boucles PowerShell telles que la boucle foreach, while, do-while et les instructions switch car elles vous permettent de contrôler l’endroit où votre code s’arrêtera avant sa complétion.

Pratiquons l’interruption de boucles. Ci-dessous, vous pouvez voir un extrait de code avec une boucle for. La boucle for itérerait dix fois si ce n’était pas du break à l’intérieur. Le mot-clé break sera déclenché lorsque l’itérateur est égal à huit. Une fois que PowerShell trouve le mot-clé break, il arrête la boucle.

for($i=1; $i -le 10; $i++) {
	if($i -eq 8) { break }
	$i
}

Vous pouvez voir ci-dessous que PowerShell arrête la boucle lorsque i est égal à 8. Le code n’atteint jamais 9. Vous avez réussi à sortir d’une boucle for.

Breaking a for loop

Redirection de l’exécution du code avec Return

Le mot-clé return est légèrement différent des mots-clés précédents car il ne quitte ni ne casse les commandes. Ce mot-clé redirige l’exécution du code. Il renvoie l’exécution à son appel tout en vous permettant de renvoyer des valeurs. Et pas seulement des entiers, comme exit, notez-le bien. Vous pouvez renvoyer n’importe quel type ! Ces comportements rendent le mot-clé return plus polyvalent que les mots-clés précédents.

Voyons-le en action avec un exemple : construire une fonction pour apparier des mots. Copiez le code ci-dessous dans votre session PowerShell :

function WordPairing ($a,$b) {

	return "$a" + "$b" # <-- Combinaison de deux mots en un seul mot

}

$output = WordPairing taco cat

Write-Output "$output is a strange pairing of words."

Remarquez comment la valeur que vous renvoyez de la fonction apparaît dans la sortie.

Redirecting code execution with the return keyword

Vous redirigez la $output générée par la fonction WordPairing là où la $output est appelée.

Conclusion

Dans ce guide, vous avez appris différentes façons de terminer les sessions et les scripts PowerShell. Chaque méthode repose sur un mot-clé spécifique. Chaque mot-clé a un cas d’utilisation particulier. Lorsqu’ils sont utilisés correctement, chacun de ces mots-clés vous donne un contrôle énorme sur ce que fait votre script.

Maintenant que vous connaissez différentes façons de quitter vos sessions PowerShell, comment comptez-vous améliorer vos scripts avec cette nouvelle connaissance ?

Source:
https://adamtheautomator.com/powershell-exit/