PowerShell Exit 명령 및 친구들 사용 방법

PowerShell에서 스크립트를 종료하거나 명령을 종료하는 가장 좋은 방법은 무엇인지 궁금해 해 본 적이 있나요? PowerShell 종료 명령으로 PowerShell 세션이 닫히나요? 사용자 지정 종료 코드를 반환하는 방법은 무엇인가요? 다행히도 여기서 이 모든 질문에 대한 답을 찾을 수 있습니다!

이 안내서에서는 PowerShell 스크립트 또는 세션을 종료하는 모든 방법에 대해 알아보겠습니다.

자, PowerShell 세션 및 스크립트를 종료할 준비를 해보겠습니다!

전제 조건

이 가이드를 따라하기 위해서는 Windows PowerShell 또는 PowerShell Core가 컴퓨터에 설치되어 있어야 합니다. 이 문서의 예제는 PowerShell 7.1.4를 사용합니다.

PowerShell 종료 명령으로 콘솔 및 스크립트 종료

이 튜토리얼에서는 PowerShell에 내장된 여러 예약어 중 하나인 exit 키워드에 대해 알아보겠습니다. 예약어는 PowerShell에 내장된 일련의 문자로, 어떤 동작을 수행합니다. exit 키워드의 동작은 PowerShell 세션을 종료하는 것입니다.

실습해 봅시다! PowerShell 콘솔 세션을 열고, exit를 입력하고 Enter 키를 누르세요. PowerShell 콘솔이 즉시 닫힙니다.

이 키워드는 콘솔 세션 대신 스크립트를 종료할 수도 있습니다. 스크립트에 exit 키워드를 포함하면 exit는 스크립트만 종료하고 스크립트가 실행되는 콘솔 세션 전체를 종료하지는 않습니다.

아래 코드를 메모장에 복사하여 스크립트를 test.ps1로 저장하고 C:\Temp 디렉터리에 저장하십시오. 아래 스크린샷에 표시된대로 명령어 .\text.ps1을 실행하여 PowerShell 스크립트 파일을 실행하십시오. PowerShell이 세션을 종료하는 대신 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 코드로 피드백 받기 및 제공하기

exit 명령어는 스크립트나 함수가 코드를 실행한 후 종료해야 하는 경우에 유용합니다. 그러나 스크립트가 성공적으로 실행되었는지 여부에 대한 표시를 받지 못하는 경우가 있습니다.

PowerShell이 스크립트에서 마지막 명령어를 실행할 때, 그 마지막 명령어의 종료 코드를 $LASTEXITCODE 변수에 저장합니다.

기본적으로 두 가지 종료 코드가 있습니다:

PowerShell은 종료 코드로 01에 제한되지 않습니다. PowerShell은 정수인 경우 사용자 정의 종료 코드를 반환할 수 있습니다.

종료 코드의 값 범위는 플랫폼에 따라 다릅니다. Windows에서는 32비트 부호 있는 정수가 허용됩니다. UNIX에서는 양수 8비트 정수만 허용됩니다.

사용자 정의 종료 코드로 PowerShell을 종료하려면 종료 키워드에 종료 코드를 인수로 제공할 수 있습니다.

아래의 코드를 기존의 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 이후에는 코드가 다음 반복에서 계속 실행됩니다.

foreach, while, do-while, 그리고 switch 문과 같은 PowerShell 루프에서는 중단문이 유용합니다. 중단문을 사용하면 코드가 완료되기 전에 코드가 중단될 위치를 제어할 수 있습니다.

루프에서 빠져나오는 것을 연습해 봅시다. 아래에는 for 루프가있는 코드 스니펫이 있습니다. iterator가 8과 같을 때 break가 되지 않으면 for 루프는 10 번 반복됩니다. 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/