항목 about_Functions_Advanced 간단한 설명 cmdlet과 비슷하게 동작하는 고급 함수를 소개합니다. 자세한 설명 고급 함수를 사용하면 cmdlet으로 수행할 수 있는 작업과 비슷한 작업을 수행할 수 있는 함수를 작성할 수 있습니다. 고급 함수는 Microsoft .NET Framework 언어를 사용하여 컴파일된 cmdlet을 작성하지 않고도 함수를 빠르게 작성하려 할 때 유용합니다. 또한 컴파일된 cmdlet의 기능을 제한하거나 컴파일된 cmdlet과 비슷한 함수를 작성하려는 경우에도 유용합니다. 컴파일된 cmdlet과 고급 함수를 작성할 때 차이점이 있습니다. 컴파일된 cmdlet은 C#과 같은 .NET Framework 언어로 작성해야 하는 .NET Framework 클래스입니다. 반면 고급 함수는 다른 함수나 스크립트 블록을 작성할 때와 같은 방식으로 Windows PowerShell 스크립트 언어로 작성됩니다. 고급 함수는 CmdletBinding 특성을 사용하여 cmdlet과 비슷하게 동작하는 함수로 취급됩니다. CmdletBinding 특성은 컴파일된 cmdlet 클래스에 사용되어 해당 클래스를 cmdlet으로 만드는 Cmdlet 특성과 비슷합니다. 이 특성에 대한 자세한 내용은 about_Functions_CmdletBindingAttribute를 참조하십시오. 다음 예에서는 제공된 이름을 받은 다음 이 이름을 사용하여 인사말을 인쇄하는 함수를 보여 줍니다. 또한 이 함수는 컴파일된 cmdlet의 동사-명사와 비슷한 동사(Send)와 명사(Greeting) 쌍을 포함하는 이름을 정의합니다. 하지만 동사-명사 이름을 갖기 위해 함수가 필요하지는 않습니다. function Send-Greeting { [CmdletBinding()] Param( [Parameter(Mandatory=$true)] [string] $Name ) Process { write-host ("Hello " + $Name + "!") } } 함수의 매개 변수는 Parameter 특성을 사용하여 선언됩니다. 이 특성만 사용하거나, Alias 특성과 결합하거나, 다른 여러 매개 변수 유효성 검사 특성과 결합할 수 있습니다. 매개 변수(런타임에 추가된 동적 매개 변수 포함)를 선언하는 방법에 대한 자세한 내용은 다음을 참조하십시오. about_Functions_Advanced_Parameters. 위 함수의 실제 연산은 Process 블록에서 수행됩니다. 이 블록은 컴파일된 cmdlet을 사용하여 cmdlet에 전달된 데이터를 처리하는 ProcessingRecord 메서드와 동일합니다. 이 블록은 Begin 및 End 블록과 함께 about_Functions_Advanced_Methods 항목에서 설명합니다. 고급 함수는 다음과 같은 측면에서 컴파일된 cmdlet과 다릅니다. - 고급 함수 매개 변수 바인딩은 문자열의 배열이 부울 매개 변수에 바인딩되는 경우 예외를 throw하지 않습니다. - ValidateSet 특성과 ValidatePattern 특성은 명명된 매개 변수를 전달할 수 없습니다. - 고급 함수는 트랜잭션에서 사용할 수 없습니다. 참고 항목 about_Functions_Advanced_CmdletBindingAttribute about_Functions_Advanced_Methods about_Functions_Advanced_Parameters Windows PowerShell Cmdlets (https://go.microsoft.com/fwlink/?LinkID=135279)