如何使用 PowerShell Exit 命令及其相關功能

你是否曾想过:“如何在PowerShell中终止脚本或退出命令?” 使用PowerShell exit命令会关闭PowerShell会话吗? 如何返回自定义退出代码?好消息!在本指南中,您将找到这些问题的答案以及更多内容。

学习所有退出PowerShell脚本或会话的方法。

让我们准备好终止一些PowerShell会话和脚本吧!

先决条件

要跟随本文,请确保在您的计算机上安装了Windows PowerShell或PowerShell Core。本文中的示例将使用PowerShell 7.1.4

使用PowerShell Exit命令终止控制台和脚本

让我们深入研究本教程,首先涵盖PowerShell中的一个保留字exit,这是PowerShell中的许多保留字之一。 保留字是内置到PowerShell中的一组字符,用于执行某些操作。 对于exit关键字,操作是使PowerShell退出PowerShell会话。

让我们练习一下! 打开PowerShell控制台会话,键入exit,然后按Enter键。 PowerShell控制台将立即关闭。

這個關鍵字也可以結束一個腳本,而不只是結束控制台會話。在腳本中包含exit 這個關鍵字,exit 只會終止腳本,而不是整個從腳本運行的控制台會話。

複製並粘貼下面的代碼到記事本,並將腳本保存為test.ps1C:\Temp 目錄。運行PowerShell腳本文件,執行.\text.ps1 命令,如下面的截圖所示。請注意,PowerShell並未關閉會話,而是終止腳本並將控制返回到當前PowerShell會話的提示。

# 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

通過退出代碼接收和提供反饋

exit 命令對於需要運行一些代碼並退出的情況很有幫助。但是,如果腳本是否成功運行沒有任何指示,則無法獲得任何指示。

當PowerShell運行腳本中的最後一個命令時,它將該最後一個命令的退出代碼存儲在$LASTEXITCODE 變量中。

有兩個默認的退出代碼:

PowerShell 不限制您使用 01 作為退出代碼。只要它們是 整數,PowerShell 就允許您返回自定義退出代碼。

退出代碼的值範圍取決於平台。在 Windows 上,允許任何 32 位有符號整數。在 Unix 上,只允許使用正的 8 位整數。

要使用自定義退出代碼退出 PowerShell,您可以將退出代碼作為 exit 關鍵字的參數提供。

複製並粘貼下面的代碼到現有的 test.ps1 文件中,並使用命令 .\Test.ps1 執行腳本。檢查 $LASTEXITCODE 變量的內容。通過告訴 PowerShell 使用 55 退出代碼退出,它確實這樣做了,您可以在下面看到。

Function foo {
    Write-Output "This foo function will be shown"
    Exit 55 # < -- 使用自定義退出代碼
}

foo
Returning a custom exit code

使用 Break 跳出循環

有時 exit 行為是不可接受的:比如退出一個函數。讓我們看看 break 關鍵字如何幫助。

break 關鍵字使 PowerShell 停止循環。在 break 後,代碼會在下一次迭代時繼續執行。

中斷對於 PowerShell 循環非常有用,如 foreachwhiledo-whileswitch 語句,因為您可以控制在代碼完成之前停止代碼的位置。

讓我們練習跳出循環。下面您可以看到一個帶有 for 循環的片段代碼。如果沒有 break,for 循環將遍歷十次。當迭代器等於八時,將觸發 break 關鍵字。一旦 PowerShell 找到 break 關鍵字,它將停止循環。

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

您可以看到 PowerShell 在 i 等於 8 時停止了循環。代碼永遠不會執行到 9。您已成功跳出了 for 循環。

Breaking a for loop

通過返回重定向代碼執行

return 關鍵字與先前的關鍵字略有不同,因為它不會退出或中斷命令。這個關鍵字重定向了代碼的執行。它返回執行到調用處,同時允許你返回值。而且不僅僅是整數,就像 exit 一樣。你可以返回任何類型!這些行為使得 return 關鍵字比先前的關鍵字更加靈活。

讓我們通過一個示例來看它的工作原理:構建一個將單詞配對的函數。將以下代碼複製到您的 PowerShell 會話中:

function WordPairing ($a,$b) {

	return "$a" + "$b" # <-- 將兩個詞組合成一個詞

}

$output = WordPairing taco cat

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

請注意你從函數返回的值在輸出中的位置。

Redirecting code execution with the return keyword

你將由 WordPairing 函數生成的 $output 重定向回 $output 被調用的地方。

結論

在本指南中,您已經學會了終止 PowerShell 會話和腳本的不同方法。每種方法都依賴於特定的關鍵字。每個關鍵字都有一個特定的用例。當適當使用時,這些關鍵字中的每一個都能讓您對腳本的行為擁有巨大的控制權。

既然您已經知道了不同退出 PowerShell 會話的方法,您打算如何利用這些新知識來改進您的腳本呢?

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