你是否曾想过:“如何在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.ps1 到C:\Temp 目錄。運行PowerShell腳本文件,執行.\text.ps1
命令,如下面的截圖所示。請注意,PowerShell並未關閉會話,而是終止腳本並將控制返回到當前PowerShell會話的提示。

exit
keyword stopped the script execution, but the console is still running 通過退出代碼接收和提供反饋
exit
命令對於需要運行一些代碼並退出的情況很有幫助。但是,如果腳本是否成功運行沒有任何指示,則無法獲得任何指示。
當PowerShell運行腳本中的最後一個命令時,它將該最後一個命令的退出代碼存儲在$LASTEXITCODE
變量中。
有兩個默認的退出代碼:
- 0 – 表示成功:正常終止
- 1 – 表示失敗:未捕獲的拋出異常
PowerShell 不限制您使用 0
和 1
作為退出代碼。只要它們是 整數,PowerShell 就允許您返回自定義退出代碼。
退出代碼的值範圍取決於平台。在 Windows 上,允許任何 32 位有符號整數。在 Unix 上,只允許使用正的 8 位整數。
要使用自定義退出代碼退出 PowerShell,您可以將退出代碼作為 exit 關鍵字的參數提供。
複製並粘貼下面的代碼到現有的 test.ps1 文件中,並使用命令 .\Test.ps1
執行腳本。檢查 $LASTEXITCODE
變量的內容。通過告訴 PowerShell 使用 55
退出代碼退出,它確實這樣做了,您可以在下面看到。

使用 Break 跳出循環
有時 exit
行為是不可接受的:比如退出一個函數。讓我們看看 break
關鍵字如何幫助。
break
關鍵字使 PowerShell 停止循環。在 break
後,代碼會在下一次迭代時繼續執行。
中斷對於 PowerShell 循環非常有用,如 foreach、while、do-while 和 switch 語句,因為您可以控制在代碼完成之前停止代碼的位置。
讓我們練習跳出循環。下面您可以看到一個帶有 for 循環的片段代碼。如果沒有 break
,for 循環將遍歷十次。當迭代器等於八時,將觸發 break
關鍵字。一旦 PowerShell 找到 break
關鍵字,它將停止循環。
您可以看到 PowerShell 在 i
等於 8 時停止了循環。代碼永遠不會執行到 9。您已成功跳出了 for 循環。

通過返回重定向代碼執行
return
關鍵字與先前的關鍵字略有不同,因為它不會退出或中斷命令。這個關鍵字重定向了代碼的執行。它返回執行到調用處,同時允許你返回值。而且不僅僅是整數,就像 exit
一樣。你可以返回任何類型!這些行為使得 return
關鍵字比先前的關鍵字更加靈活。
讓我們通過一個示例來看它的工作原理:構建一個將單詞配對的函數。將以下代碼複製到您的 PowerShell 會話中:
請注意你從函數返回的值在輸出中的位置。

return
keyword 你將由 WordPairing
函數生成的 $output
重定向回 $output
被調用的地方。
結論
在本指南中,您已經學會了終止 PowerShell 會話和腳本的不同方法。每種方法都依賴於特定的關鍵字。每個關鍵字都有一個特定的用例。當適當使用時,這些關鍵字中的每一個都能讓您對腳本的行為擁有巨大的控制權。
既然您已經知道了不同退出 PowerShell 會話的方法,您打算如何利用這些新知識來改進您的腳本呢?