Hoe gebruik je de PowerShell Exit-opdracht en verwanten

Heb je je ooit afgevraagd, “Wat is de beste manier om een script te beëindigen of een opdracht af te sluiten in PowerShell?” Sluit de PowerShell-sessie af met het PowerShell exit-commando? Hoe retourneer je aangepaste exit-codes? Nou, je hebt geluk!

In deze handleiding krijg je antwoord op deze vragen en meer. Ontdek alle manieren om een PowerShell-script of sessie te beëindigen.

Laten we ons klaarmaken om wat PowerShell-sessies en scripts te beëindigen!

Vereisten

Zorg ervoor dat Windows PowerShell of PowerShell Core is geïnstalleerd op je machine om mee te doen. De voorbeelden in dit artikel zullen PowerShell 7.1.4 gebruiken.

Beëindigen van de console en scripts met het PowerShell Exit-commando

Laten we deze tutorial induiken en eerst de exit-sleutelwoord behandelen, een van de vele gereserveerde woorden in PowerShell. Een gereserveerd woord is een reeks tekens ingebouwd in PowerShell die een bepaalde actie uitvoert. Voor het exit-sleutelwoord is de actie het beëindigen van een PowerShell-sessie.

Oefenen we even! Open een PowerShell-consolesessie, typ exit en druk op Enter. De PowerShell-console sluit onmiddellijk.

Deze sleutelwoord kan ook een script verlaten in plaats van de console sessie. Het opnemen van het exit sleutelwoord in een script en exit beëindigt alleen het script en niet de volledige console sessie van waaruit het script wordt uitgevoerd.

Kopieer en plak de onderstaande code in Kladblok en sla het script op als test.ps1 naar de C:\Temp map. Voer het PowerShell scriptbestand uit door het commando .\text.ps1 uit te voeren zoals weergegeven in de onderstaande schermafbeelding. Merk op dat in plaats van dat PowerShell de sessie afsluit, PowerShell het script beëindigt en de controle teruggeeft aan de prompt van de huidige PowerShell-sessie.

# 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

Feedback ontvangen en bieden met Exit Codes

De exit opdracht is nuttig voor situaties waarin je een script of functie wilt laten uitvoeren en dan afsluiten. Maar je krijgt geen indicatie of het script succesvol is uitgevoerd of niet.

Wanneer PowerShell de laatste opdracht in een script uitvoert, slaat het de exit-code van die laatste opdracht op in de $LASTEXITCODE variabele.

Er zijn twee standaard exit-codes:

PowerShell beperkt je niet tot 0 en 1 als uitvoercodes. PowerShell laat je aangepaste uitvoercodes retourneren, zolang ze gehele getallen zijn.

De reeks waarden voor de uitvoercode is afhankelijk van het platform. Op Windows zijn alle 32-bits gehele getallen toegestaan. Op Unix zijn alleen positieve 8-bits gehele getallen toegestaan.

Om PowerShell af te sluiten met een aangepaste uitvoercode, kun je de uitvoercode opgeven als argument voor het exit-trefwoord.

Kopieer en plak de onderstaande code in het bestaande test.ps1-bestand en voer het script uit met het commando .\Test.ps1. Controleer de inhoud van de variabele $LASTEXITCODE. Door PowerShell te vertellen af te sluiten met een uitvoercode van 55, heeft het dat gedaan, zoals je hieronder kunt zien.

Function foo {
    Write-Output "This foo function will be shown"
    Exit 55 # < -- Gebruik van aangepaste uitvoercode
}

foo
Returning a custom exit code

Uitbreken uit lussen met Break

Er zullen momenten zijn waarop het gedrag van exit niet acceptabel is, zoals het stoppen van een functie. Laten we eens kijken hoe het trefwoord break helpt.

Het trefwoord break zorgt ervoor dat PowerShell stopt met een lus. Na een break wordt de code voortgezet met de volgende iteratie.

Onderbrekingen zijn handig in PowerShell-lussen zoals de foreach, while, do-while en switch-statements omdat je controle hebt over waar je code zal stoppen voordat deze volledig is uitgevoerd.

Laten we oefenen met het doorbreken van lussen. Hieronder zie je een stukje code met een for-lus. De for-lus zou tien keer itereren als het niet voor het break commando was. Het break commando wordt geactiveerd wanneer de iterator gelijk is aan acht. Zodra PowerShell het break commando tegenkomt, stopt het de lus.

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

Je ziet hieronder dat PowerShell de lus stopt wanneer i gelijk is aan 8. De code gaat nooit naar 9. Je hebt succesvol de lus doorbroken.

Breaking a for loop

Code-uitvoering omleiden met Return

Het sleutelwoord return verschilt iets van de vorige sleutelwoorden omdat het geen opdrachten afsluit of onderbreekt. Dit sleutelwoord leidt de uitvoering van de code om. Het geeft de uitvoering terug aan zijn oproep terwijl het je toestaat waarden terug te geven. En niet alleen gehele getallen, zoals exit, let op. Je kunt elk type retourneren! Deze gedragingen maken het sleutelwoord return veelzijdiger dan de vorige sleutelwoorden.

Laten we het in actie zien met een voorbeeld: het bouwen van een functie om woorden te koppelen. Kopieer de onderstaande code naar je PowerShell-sessie:

function WordPairing ($a,$b) {

	return "$a" + "$b" # <-- Twee woorden combineren tot één woord

}

$output = WordPairing taco cat

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

Merk op hoe de waarde die je retourneert vanuit de functie in de output staat.

Redirecting code execution with the return keyword

Je leidt de $output gegenereerd door de functie WordPairing terug naar waar de $output wordt opgeroepen.

Conclusie

In deze gids heb je verschillende manieren geleerd om PowerShell-sessies en scripts te beëindigen. Elke methode vertrouwt op een specifiek sleutelwoord. Elk sleutelwoord heeft een specifiek gebruiksdoel. Wanneer ze op passende wijze worden gebruikt, geven al deze sleutelwoorden je enorm veel controle over wat je script doet.

Nu je verschillende manieren kent om je PowerShell-sessies te beëindigen, hoe plan je je scripts te verbeteren met deze nieuwe kennis?

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