PowerShell 고급 기능: Cmdlet 바인딩 및 매개 변수
홈페이지홈페이지 > 블로그 > PowerShell 고급 기능: Cmdlet 바인딩 및 매개 변수

PowerShell 고급 기능: Cmdlet 바인딩 및 매개 변수

Aug 22, 2023

브라이언 포시 | 2023년 8월 8일

다른 프로그래밍 언어와 마찬가지로 PowerShell은 함수를 반복 가능한 코드 블록으로 사용합니다.

함수는 기본 스크립트 본문에서 큰 코드 블록을 분리하는 데 유용합니다. 실제로 PowerShell 기능을 독립 실행형 cmdlet으로 전환할 수도 있습니다. 다음은 함수가 포함된 기본 PowerShell 스크립트의 예입니다.

관련: PowerShell에서 개체를 필터링하는 방법

보시다시피 스크립트는 몇 줄의 텍스트를 표시하고 함수(Do-Something이라는 이름)를 호출한 다음 몇 줄의 텍스트를 더 표시하는 것 이상의 작업을 수행합니다. 함수의 코드는 중괄호로 묶입니다.

이제 기본 함수의 예를 살펴보았으므로 PowerShell의 고급 기능에 대해 살펴보겠습니다. "고급 기능"이라는 용어에는 특별한 의미가 있으며 기능의 복잡성과는 아무런 관련이 없습니다. 고급 기능은 cmdlet 바인딩, 매개 변수 또는 둘 다를 지원하는 기능입니다.

이러한 용어의 의미와 위에 표시된 기본 기능을 고급 기능으로 변환하는 방법을 살펴보겠습니다.

기본 PowerShell cmdlet의 구문을 살펴본 적이 있다면 많은 cmdlet이 공통 매개 변수를 지원한다는 사실을 알 수 있을 것입니다. 예를 들어 그림 1에서는 Get-Service cmdlet이 일반 매개 변수의 사용을 허용하는 것을 볼 수 있습니다.

그림 1.대부분의 기본 PowerShell cmdlet에서는 공통 매개 변수를 사용할 수 있습니다.

공통 매개변수는 이름에서 알 수 있듯이 기본 PowerShell cmdlet에서 널리 지원되는 매개변수입니다. 널리 사용되는 공통 매개변수는 다음과 같습니다.

공통 매개변수를 언급하는 이유는 다음과 같습니다. 함수에 cmdlet 바인딩을 추가하면 함수가 공통 매개변수를 지원하도록 활성화됩니다. 조금 이상하게 들릴 수도 있지만 이는 함수를 독립 실행형 cmdlet으로 변환한다는 아이디어와 관련이 있습니다.

PowerShell을 사용하면 함수에 cmdlet 바인딩을 간단하게 추가할 수 있습니다. 함수 선언 아래에 다음 두 줄을 추가하면 됩니다.

이 기술은 매우 간단하지만 함수에 cmdlet 바인딩을 추가하는 것만으로는 많은 작업을 수행할 수 없다는 점을 이해하는 것이 중요합니다. 공통 매개 변수를 사용하는 방법을 PowerShell에 알려 주어야 합니다. 다행히도 이는 일반적으로 생각보다 쉽습니다.

일반적으로 사용되는 공통 매개 변수 중 하나는 ErrorAction입니다. 이는 함수를 실행하는 동안 발생할 수 있는 치명적이지 않은 오류를 처리하는 방법을 PowerShell 스크립트에 알려줍니다.

이것이 어떻게 작동하는지 보여주기 위해 다음 스크립트를 살펴보세요:

이 스크립트는 몇 줄의 추가 코드를 제외하면 앞서 제시한 것과 매우 유사합니다.

스크립트를 실행하면 오류가 표시됩니다. 그러나 오류가 치명적이지 않았으므로 오류에도 불구하고 함수는 계속 실행됩니다. 그림 2에서 이것이 어떻게 보이는지 볼 수 있습니다. 공정하게 말하면 오류 작업을 포함하지 않았더라도 치명적이지 않은 오류가 발생하더라도 함수는 계속 실행되었을 것입니다. 이는 PowerShell의 일반적인 작업 방식이기 때문입니다.

그림 2.PowerShell 스크립트에 오류가 발생하면 함수는 계속 실행됩니다.

오류를 처리하는 몇 가지 다른 방법이 있습니다. 그림 3에서는 오류 작업이 중지로 변경되면 어떤 일이 발생하는지 확인할 수 있습니다. 이 경우 오류가 치명적이지 않더라도 PowerShell은 오류가 발생하면 함수를 종료합니다. 오류 작업은 함수 호출에 적용되므로 오류가 발생할 때 종료되는 것은 함수(전체 스크립트가 아님)뿐이라는 점은 주목할 가치가 있습니다. 오류가 발생하면 PowerShell은 함수를 중단하고 스크립트 본문으로 돌아가서 나머지 스크립트를 계속 실행합니다.

그림 3.ErrorAction을 Stop으로 설정하면 오류가 발생할 때 함수가 종료됩니다.

그림 4는 오류 작업을 SilentlyContinue로 설정하면 어떤 일이 발생하는지 보여줍니다. 이 경우 오류가 발생하더라도 PowerShell은 오류 메시지를 숨기고 계속해서 함수 실행을 완료합니다.

그림 4.