항목
    about_Functions_Advanced_Methods

간단한 설명
    CmdletBinding 특성을 지정하는 함수가 컴파일된 cmdlet에 사용할 수 있는 메서드와 속성을 어떻게 사용할 
    수 있는지에 대해 설명합니다.

자세한 설명
    CmdletBinding 특성을 지정하는 함수는 $pscmdlet 변수를 통해 여러 메서드와 속성에 액세스할 수 있습니다. 
    이러한 메서드에는 다음과 같은 메서드가 있습니다.


        - 컴파일된 cmdlet에서 작업을 수행할 때 사용하는 입력 처리 메서드

        - 작업을 수행하기 전에 사용자 피드백을 받을 때 사용하는 ShouldProcess 및 
          ShouldContinue 메서드

        - 오류 레코드를 생성하는 ThrowTerminatingError 메서드

        - 다양한 출력 유형을 반환하는 여러 Write 메서드

        - 다양한 출력 유형을 반환하는 여러 Write 메서드 


    PSCmdlet 클래스의 모든 메서드와 속성은 고급 함수에 사용할 수 있습니다. 이러한 메서드와 속성에 대한 
    자세한 내용은 MSDN(Microsoft Developer Network) 
    라이브러리(https://go.microsoft.com/fwlink/?LinkId=142139)의 
    System.Management.Automation.PSCmdlet를 참조하십시오.


  입력 처리 메서드

      이 절에서 설명하는 메서드를 입력 처리 메서드라고 합니다. 함수에서 이러한 세 가지 메서드는 함수의 
      Begin, Process 및 End 블록으로 나타냅니다. 각 함수에는 이러한 블록이 한 개 이상 있어야 합니다. 
      Windows PowerShell 런타임은 함수를 실행할 때 이러한 블록 내의 코드를 사용합니다. 이러한 블록은 
      CmdletBinding 속성을 사용하지 않는 함수에 사용할 수도 있습니다.

      
    Begin
      이 블록은 함수에 선택적인 일회성 전처리를 제공하는 데 사용됩니다. Windows PowerShell 런타임은 
      파이프라인에서 함수의 각 인스턴스에 이 블록의 코드를 한 번 사용합니다.


    Process
      이 블록은 함수에 레코드별 처리를 제공하는 데 사용됩니다. 함수에 대한 입력에 따라 이 블록을 여러 번 
      사용하거나 전혀 사용하지 않을 수 있습니다. 예를 들어 함수가 파이프라인에서 첫 번째 명령인 경우 
      Process 블록이 한 번 사용됩니다. 함수가 파이프라인에서 첫 번째 명령이 아닌 경우 함수가 
      파이프라인으로부터 받는 모든 입력에 대해 Process 블록이 한 번 사용됩니다. 파이프라인 입력이 없을 
      경우 Process 블록이 사용되지 않습니다.

      함수 매개 변수가 파이프라인 입력을 받도록 설정된 경우 이 블록을 정의해야 합니다. 이 블록을 정의하지 
      않고 매개 변수가 파이프라인으로부터 입력을 받는 경우 함수는 파이프라인을 통해 함수에 전달되는 값을 
      받지 못합니다. 

      또한 Parameter 특성의 SupportsShouldProcess 매개 변수가 $True로 설정되어 함수가 
      확인 요청을 지원하는 경우 Process 블록 내에서 ShouldProcess 메서드를 호출해야 합니다.

    End
      이 블록은 함수에 선택적인 일회성 후처리를 제공하는 데 사용됩니다.

      다음 예에서는 일회성 전처리를 위한 Begin 블록, 여러 레코드 처리를 위한 Process 블록 및 일회성 후처리를 
      위한 End 블록이 있는 함수에 대한 개요를 보여 줍니다.

          Function Test-ScriptCmdlet
          {
            [CmdletBinding(SupportsShouldProcess=$True)] 
            Param ($Parameter1)
            Begin{}
            Process{}
            End{}
          }


  확인 메서드

    ShouldProcess
      이 메서드는 함수가 시스템을 변경하는 동작을 수행하기 전에 사용자로부터 확인을 요청할 때 호출됩니다. 
      함수는 이 메서드에서 반환한 부울 값을 기준으로 계속할 수 있습니다. 이 메서드는 함수의 Process{} 블록 
      내에서만 호출할 수 있습니다. 또한 이전 예제와 같이 함수에서 ShouldProcess를 지원하는 CmdletBinding 
      속성을 선언해야 합니다.

      이 메서드에 대한 자세한 내용은 MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142142)의 
      System.Management.Automation.Cmdlet.ShouldProcess를 참조하십시오.

      확인을 요청하는 방법에 대한 자세한 내용은 MSDN 
      라이브러리(https://go.microsoft.com/fwlink/?LinkID=136658)의 "Requesting 
      Confirmation(확인 요청)"을 참조하십시오.


    ShouldContinue
      이 메서드는 두 번째 확인 메시지를 요청할 때 호출되며 ShouldProcess 메서드가 $true를 반환할 때 
      호출되어야 합니다. 이 메서드에 대한 자세한 내용은 
      MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142143)의 
      System.Management.Automation.Cmdlet.ShouldContinue를 참조하십시오.


  오류 메서드

    오류가 발생했을 때 함수는 두 개의 다른 메서드를 호출할 수 있습니다. 종료되지 않는 오류가 발생하는 
    경우 함수는 "Write 메서드" 단원에서 설명한 WriteError 메서드를 호출해야 합니다. 종료되는 오류가 
    발생하고 함수를 계속 사용할 수 없는 경우 함수는 ThrowTerminatingError 메서드를 호출해야 합니다. 
    종료되는 오류에 Throw 문을 사용하고 종료되지 않는 오류에 Write-Error cmdlet을 사용할 수도 
    있습니다.

    자세한 내용은 MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142144)의
    System.Management.Automation.Cmdlet.ThrowTerminatingError를 참조하십시오.


  Write 메서드

      함수에서 다음 메서드를 호출하여 다양한 출력 유형을 반환할 수 있습니다. 모든 출력이 파이프라인의 
      다음 명령으로 이동하는 것은 아닙니다. Write-Error와 같은 다양한 Write cmdlet을 사용할 
      수도 있습니다.


    WriteCommandDetail
      WriteCommandDetails 메서드에 대한 자세한 내용은 MSDN 
      라이브러리(https://go.microsoft.com/fwlink/?LinkId=142155)의 
      System.Management.Automation.Cmdlet.WriteCommandDetail을 참조하십시오.


    WriteDebug
      함수 문제를 해결하는 데 사용할 수 있는 정보를 제공하려면 함수에서 WriteDebug 메서드를 호출하도록 
      합니다. 이렇게 하면 사용자에게 디버그 메시지가 표시됩니다. 자세한 내용은 MSDN 
      라이브러리(https://go.microsoft.com/fwlink/?LinkId=142156)의 
      System.Management.Automation.Cmdlet.WriteDebug를 참조하십시오.


    WriteError
      종료되지 않는 오류가 발생하고 함수가 레코드를 계속 처리하도록 지정된 경우 함수는 이 메서드를 
      호출해야 합니다. 자세한 내용은 MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142157)의 
      System.Management.Automation.Cmdlet.WriteError를 참조하십시오.

      참고: 종료되는 오류가 발생하는 경우 함수는 ThrowTerminatingError 메서드를 호출해야 합니다. 


    WriteObject
      이 메서드를 사용하면 함수가 파이프라인의 다음 명령으로 개체를 보낼 수 있습니다. 대부분의 경우 
      함수가 데이터를 반환할 때 이 메서드를 사용합니다. 자세한 내용은 
      MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142158)의 
      System.Management.Automation.PSCmdlet.WriteObject를 참조하십시오.


    WriteProgress
      작업을 완료하는 데 시간이 오래 걸리는 함수의 경우 이 메서드를 사용하면 진행률 정보가 표시되도록 
      함수가 WriteProgress 메서드를 호출할 수 있습니다. 예를 들어 완료된 백분율을 표시할 수 있습니다. 
      자세한 내용은 
      MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142160)의 
      System.Management.Automation.PSCmdlet.WriteProgress를 참조하십시오.


    WriteVerbose
      함수가 수행하는 작업에 대한 세부 정보를 제공하기 위해 WriteVerbose 메서드를 호출하여 사용자에게 
      자세한 정보 표시 메시지를 표시하도록 할 수 있습니다. 자세한 정보 메시지는 기본적으로 표시되지 
      않습니다. 자세한 내용은 MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142162)의 
      System.Management.Automation.PSCmdlet.WriteVerbose를 참조하십시오.

    WriteWarning
      예기치 않은 결과를 가져올 수 있는 조건에 대한 정보를 제공하기 위해 함수에서 WriteWarning 메서드를 
      호출하여 사용자에게 경고 메시지를 표시하도록 할 수 있습니다. 경고 메시지는 기본적으로  표시됩니다.
      자세한 내용은 
      MSDN 라이브러리(https://go.microsoft.com/fwlink/?LinkId=142164)의 
      System.Management.Automation.PSCmdlet.WriteWarning을 참조하십시오.

      참고: WarningPreference 변수를 구성하거나 Verbose 및 Debug 명령줄 옵션을 사 용하여 
            경고 메시지를 표시할 수도 있습니다.


  다른 메서드 및 속성

      $PSCmdlet 변수를 통해 액세스할 수 있는 다른 메서드와 속성에 대한 자세한 내용은 MSDN 
      라이브러리(https://go.microsoft.com/fwlink/?LinkId=142139)의 System.Managemen
t.Automation.PSCmdlet를 참조하십시오. 

      예를 들어 ParameterSetName 속성을 사용하면 사용되는 매개 변수를 볼 수 있습니다. 매개 변수 집합을 
      사용하면 함수를 실행할 때 지정한 매개 변수를 기준으로 여러 작업을 수행하는 함수를 만들 수 있습니다.


참고 항목
    about_Functions_Advanced
    about_Functions_CmdletBindingAttributes
    about_Functions_Advanced_Parameters  




목차