在 Windows PowerShell 中終止指令碼
-
在 Windows PowerShell 中使用
Exit
命令終止指令碼 -
在 Windows PowerShell 中使用
Throw
命令終止指令碼 -
Return
命令 -
break
命令 -
continue
命令
在 Windows PowerShell 中有多種終止指令碼的方法。但是,其中一些在上下文方面可能聽起來相似,但在功能方面,它們的實際目的卻彼此不同。
本文將列舉在 Windows PowerShell 中終止指令碼的方法並一一定義。
在 Windows PowerShell 中使用 Exit
命令終止指令碼
Exit
命令將退出從其名稱派生的指令碼。如果你沒有開啟的會話,此命令還將關閉你的 shell 或指令碼視窗。Exit
命令還有助於通過使用退出程式碼提供反饋。
exit
僅執行 exit
命令可以具有退出程式碼 0
(預設),表示成功或正常終止,或 1
,表示失敗或未捕獲的丟擲。
退出程式碼的優點是退出程式碼是完全可定製的。只要退出碼是整數,退出碼就有效。此外,要知道最後的退出程式碼,你可以輸出變數 $LASTEXITCODE
。
退出.ps1
Write-Output 'Running sample script.'
exit 200
示例程式碼:
PS C:\>powershell.exe .\Exit.ps1
PS C:\>Running sample script.
PS C:\>Write-Output $LASTEXITCODE
PS C:\>200
另外,請記住,當你從正在執行的 PowerShell 指令碼中使用 exit
命令呼叫另一個 PowerShell 檔案時,正在執行的指令碼也將終止。
在 Windows PowerShell 中使用 Throw
命令終止指令碼
Throw
命令類似於帶有退出程式碼的 Exit
命令,但資訊量更大。你可以使用命令和自定義表示式來生成終止錯誤。通常,Throw
命令用於 Try-Catch
表示式內的 Catch
塊內,以充分描述異常。
示例程式碼:
Try{
$divideAnswer = 1/0
}Catch{
Throw "The mathematical expression has a syntax error"
}
輸出:
The mathematical expression has a syntax error
At line:4 char:5
+ Throw "The mathematical expression has a syntax error"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (The mathematica... a syntax error:String) [], RuntimeException
+ FullyQualifiedErrorId : The mathematical expression has a syntax error
Return
命令
與 Exit
命令不同,Return
命令將返回到其先前的呼叫點並且不會關閉你的指令碼視窗。
通常,我們使用 Return
命令從指令碼中某處執行的函式返回值。
示例程式碼:
Function sumValues($int1,$int2){
Return ($int1 + $int2)
}
# The function sumValues is called below, and the script will return to
# the same line with a value and store it in the output variable
$output = sumValues 1 2
Write-Output $output
輸出:
3
break
命令
我們使用 break
命令來終止迴圈和案例。
示例程式碼:
$numList = 1,2,3,4,5,6,7,8
foreach($number in $numList){
if ($number -eq 8){
#Terminate loop if number variable is equal to 8
break
}
Write-Output $number
}
輸出:
1
2
3
4
5
6
7
如果我們有巢狀迴圈,我們只會從呼叫 break
命令的迴圈中中斷。
示例程式碼:
While ($true) {
While ($true) {
#The break command will only break out of this while loop
break
}
#The script will continue to run on this line after breaking out of the inner while loop
}
如果你想跳出一個特定的巢狀迴圈,break
命令使用標籤作為它的引數。
While ($true) {
:thisLoop While ($true) {
While ($true) {
#The break command below will break out of the `thisLoop` while loop.
Break thisLoop
}
}
}
continue
命令
continue
命令還會在迴圈級別終止指令碼。儘管如此,continue
命令並不會立即終止整個迴圈,而是僅終止當前迭代並保持迴圈繼續進行,直到所有迭代都已處理完畢。
我們可以說這是一個在執行迴圈時跳過某些內容的命令。
示例程式碼:
$numList = 1,2,3,4,5,6,7,8
foreach($number in $numList){
if ($number -eq 2){
#The continue command below will skip number 2 and will directly process the next iteration, resetting the process to the top of the loop.
continue
}
Write-Output $number
}
輸出:
1
3
4
5
6
7
8
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn