在 Windows PowerShell 中終止指令碼

Marion Paul Kenneth Mendoza 2023年6月9日 2022年5月16日
  1. 在 Windows PowerShell 中使用 Exit 命令終止指令碼
  2. 在 Windows PowerShell 中使用 Throw 命令終止指令碼
  3. Return 命令
  4. break 命令
  5. continue 命令
在 Windows PowerShell 中終止指令碼

在 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相關文章 - PowerShell Script