about_Functions_Advanced
간단한 설명
스크립트를 사용하여 cmdlet을 만드는 방법인 고급 함수를 소개합니다.
자세한 설명
cmdlet은 PowerShell의 파이프라인 의미 체계에 참여하는 단일 명령입니다. 여기에는 이진 cmdlet, PowerShell 고급 함수 및 CDXML cmdlet이 포함됩니다.
고급 함수를 사용하면 PowerShell 함수로 작성된 cmdlet을 만들 수 있습니다. 고급 함수를 사용하면 이진 cmdlet을 작성하고 컴파일하지 않고도 cmdlet을 더 쉽게 만들 수 있습니다. 이진 cmdlet은 C#과 같은 .NET 언어로 작성된 .NET 클래스입니다.
고급 함수는 특성을 사용하여 CmdletBinding
cmdlet처럼 작동하는 함수로 식별합니다. 이 CmdletBinding
특성은 컴파일된 cmdlet 클래스에서 클래스를 cmdlet으로 식별하는 데 사용되는 Cmdlet 특성과 유사합니다. 이 특성에 대한 자세한 내용은 about_Functions_CmdletBindingAttribute 참조하세요.
함수의 매개 변수는 param()
문에 선언된 변수입니다. 선택적 [Parameter()]
특성만 사용하거나 [Alias()]
특성 또는 매개 변수 유효성 검사 특성과 함께 사용할 수 있습니다. 매개 변수를 선언하는 방법에 대한 자세한 내용은 about_Functions_Advanced_Parameters참조하세요.
다음 예제에서는 이름을 수락한 다음 제공된 이름을 사용하여 인사말을 인쇄하는 함수를 보여 줍니다. 또한 이 함수는 컴파일된 cmdlet의 동사-명사 쌍과 같은 동사(보내기) 및 명사(Greeting) 쌍을 포함하는 이름을 정의합니다. 그러나 함수는 동사 명사 이름을 가질 필요가 없습니다.
function Send-Greeting
{
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string] $Name
)
process
{
Write-Host ("Hello " + $Name + "!")
}
}
이 함수는 컴파일된 cmdlet에 사용되는 ProcessingRecord 메서드와 동일한 process
블록에서 작업을 수행합니다.
process
블록 및 다른 명명된 블록은 about_Functions_Advanced_Methods에 설명되어 있습니다.
고급 함수는 다음과 같은 방법으로 컴파일된 cmdlet과 다릅니다.
- 문자열 배열이 부울 매개 변수에 바인딩된 경우 고급 함수 매개 변수 바인딩은 예외를 throw하지 않습니다.
- 특성과 특성은
ValidateSet
ValidatePattern
명명된 매개 변수를 전달할 수 없습니다. - 고급 함수는 트랜잭션에서 사용할 수 없습니다.
참고 항목
PowerShell