Cmdlet 동적 매개 변수
Cmdlet은 다른 매개 변수의 인수가 특정 값인 경우와 같이 특별한 조건에서 사용자가 사용할 수 있는 매개 변수를 정의할 수 있습니다. 이러한 매개 변수는 런타임에 추가되며 필요한 경우에만 추가되므로 동적 매개 변수라고 합니다. 예를 들어 특정 스위치 매개 변수가 지정된 경우에만 여러 매개 변수를 추가하는 cmdlet을 디자인할 수 있습니다.
비고
공급자 및 PowerShell 함수는 동적 매개 변수를 정의할 수도 있습니다.
PowerShell cmdlet의 동적 매개 변수
PowerShell은 여러 공급자 cmdlet에서 동적 매개 변수를 사용합니다. 예를 들어 Get-Item
및 Get-ChildItem
cmdlet은 Path 매개 변수가 인증서 공급자 경로를 지정하는 경우 런타임에 CodeSigningCert 매개 변수를 추가합니다.
Path 매개 변수가 다른 공급자에 대한 경로를 지정하는 경우 CodeSigningCert 매개 변수를 사용할 수 없습니다.
다음 예제에서는 Get-Item
실행 시 런타임에 CodeSigningCert 매개 변수가 추가되는 방법을 보여 줍니다.
이 예제에서는 PowerShell 런타임이 매개 변수를 추가했으며 cmdlet이 성공했습니다.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
이 예제에서는 FileSystem 드라이브가 지정되고 오류가 반환됩니다. 오류 메시지는 CodeSigningCert 매개 변수를 찾을 수 없음을 나타냅니다.
Get-Item -Path C:\ -CodeSigningCert
Get-Item : A parameter cannot be found that matches parameter name 'CodeSigningCert'.
At line:1 char:37
+ Get-Item -Path C:\ -CodeSigningCert <<<<
--------
CategoryInfo : InvalidArgument: (:) [Get-Item], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand
동적 매개 변수 지원
동적 매개 변수를 지원하려면 cmdlet 코드에 다음 요소를 포함해야 합니다.
인터페이스
System.Management.Automation.IDynamicParameters . 이 인터페이스는 동적 매개 변수를 검색하는 메서드를 제공합니다.
다음은 그 예입니다.
public class SendGreetingCommand : Cmdlet, IDynamicParameters
메서드
system.Management.Automation.IDynamicParameters.GetDynamicParameters . 이 메서드는 동적 매개 변수 정의를 포함하는 개체를 검색합니다.
다음은 그 예입니다.
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
클래스
추가할 동적 매개 변수를 정의하는 클래스입니다. 이 클래스에는 각 매개 변수에 대한 매개 변수 특성과 cmdlet에 필요한 선택적 별칭 및 유효성 검사 특성이 포함되어야 합니다.
다음은 그 예입니다.
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
동적 매개 변수를 지원하는 cmdlet의 전체 예제는 동적 매개 변수선언하는 방법을 참조하세요.
참고하십시오
- System.Management.Automation.IDynamicParameters
- system.Management.Automation.IDynamicParameters.GetDynamicParameters
- 동적 매개 변수 선언하는 방법
- Windows PowerShell Cmdlet 작성
PowerShell