동적 매개 변수를 선언하는 방법
이 예제에서는 런타임에 cmdlet에 추가되는 동적 매개 변수를 정의하는 방법을 보여줍니다. 이 예제에서는 Department
사용자가 switch 매개 변수를 지정할 때마다 매개 변수가 cmdlet에 Employee
추가됩니다. 동적 매개 변수에 대한 자세한 내용은 Cmdlet 동적 매개 변수 를 참조하세요.
동적 매개 변수를 정의하려면
cmdlet 클래스 선언에서 표시된 것처럼 System.Management.Automation.Idynamicparameters 인터페이스를 추가합니다.
public class SendGreetingCommand : Cmdlet, IDynamicParameters
동적 매개 변수가 정의된 개체를 반환하는 System.Management.Automation.Idynamicparameters.Getdynamicparameters* 메서드를 호출합니다. 이 예제에서 메서드는 매개
Employee
변수가 지정될 때 호출됩니다.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; }
예제
이 예제에서는 Department
사용자가 매개 변수를 지정할 때마다 Employee
매개 변수가 추가됩니다. Department
매개 변수는 선택적 매개 변수이며 ValidateSet 특성은 허용되는 인수를 지정하는 데 사용됩니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation; // PowerShell assembly.
namespace SendGreeting
{
// Declare the cmdlet class that supports the
// IDynamicParameters interface.
[Cmdlet(VerbsCommunications.Send, "Greeting")]
public class SendGreetingCommand : Cmdlet, IDynamicParameters
{
// Declare the parameters for the cmdlet.
[Parameter(Mandatory = true)]
public string Name
{
get { return name; }
set { name = value; }
}
private string name;
[Parameter]
[Alias ("FTE")]
public SwitchParameter Employee
{
get { return employee; }
set { employee = value; }
}
private Boolean employee;
// Implement GetDynamicParameters to
// retrieve the dynamic parameter.
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
// Overide the ProcessRecord method to process the
// supplied user name and write out a greeting to
// the user by calling the WriteObject method.
protected override void ProcessRecord()
{
WriteObject("Hello " + name + "! ");
if (employee)
{
WriteObject("Department: " + context.Department);
}
}
}
// Define the dynamic parameters to be added
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
}
참고 항목
System.Management.Automation.Runtimedefinedparameterdictionary
System.Management.Automation.Idynamicparameters.Getdynamicparameters*
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기