다음을 통해 공유


about_Functions_Advanced

간단한 설명

스크립트를 사용하여 cmdlet을 만드는 방법인 고급 함수를 소개합니다.

자세한 설명

cmdlet은 PowerShell의 파이프라인 의미 체계에 참여하는 단일 명령입니다. 여기에는 이진 cmdlet, 고급 스크립트 함수, CDXML 및 워크플로가 포함됩니다.

고급 함수를 사용하면 PowerShell 함수로 작성된 cmdlet을 만들 수 있습니다. 고급 함수를 사용하면 이진 cmdlet을 작성하고 컴파일하지 않고도 cmdlet을 더 쉽게 만들 수 있습니다. 이진 cmdlet은 C#과 같은 .NET 언어로 작성된 .NET 클래스입니다.

고급 함수는 특성을 사용하여 CmdletBinding cmdlet처럼 작동하는 함수로 식별합니다. 이 CmdletBinding 특성은 컴파일된 cmdlet 클래스에서 클래스를 cmdlet으로 식별하는 데 사용되는 Cmdlet 특성과 유사합니다. 이 특성에 대한 자세한 내용은 about_Functions_CmdletBindingAttribute 참조하세요.

다음 예제에서는 이름을 수락한 다음 제공된 이름을 사용하여 인사말을 인쇄하는 함수를 보여 줍니다. 또한 이 함수는 컴파일된 cmdlet의 동사-명사 쌍과 같은 동사(보내기) 및 명사(Greeting) 쌍을 포함하는 이름을 정의합니다. 그러나 함수는 동사 명사 이름을 가질 필요가 없습니다.

function Send-Greeting
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [string] $Name
    )

    Process
    {
        Write-Host ("Hello " + $Name + "!")
    }
}

함수의 매개 변수는 특성을 사용하여 Parameter 선언됩니다. 이 특성은 단독으로 사용하거나 별칭 특성 또는 다른 여러 매개 변수 유효성 검사 특성과 결합할 수 있습니다. 매개 변수를 선언하는 방법(런타임에 추가되는 동적 매개 변수 포함)에 대한 자세한 내용은 about_Functions_Advanced_Parameters 참조하세요.

이전 함수의 실제 작업은 블록에서 process 수행되며 이는 컴파일된 cmdlet에서 cmdlet에 전달된 데이터를 처리하는 데 사용하는 ProcessingRecord 메서드와 동일합니다. 이 블록은 및 블록과 end 함께 begin about_Functions_Advanced_Methods 항목에 설명되어 있습니다.

고급 함수는 다음과 같은 방법으로 컴파일된 cmdlet과 다릅니다.

  • 문자열 배열이 부울 매개 변수에 바인딩된 경우 고급 함수 매개 변수 바인딩은 예외를 throw하지 않습니다.
  • 특성과 특성은 ValidateSet ValidatePattern 명명된 매개 변수를 전달할 수 없습니다.
  • 고급 함수는 트랜잭션에서 사용할 수 없습니다.

참고 항목