이 예제에서는 런타임에 cmdlet에 추가되는 동적 매개 변수를 정의하는 방법을 보여줍니다. 이 예제에서는 사용자가 Employee
switch 매개 변수를 지정할 때마다 Department
매개 변수가 cmdlet에 추가됩니다. 동적 매개 변수에 대한 자세한 내용은 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; }
예시
이 예제에서는 사용자가 Employee
매개 변수를 지정할 때마다 Department
매개 변수가 추가됩니다.
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;
// Override 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*
- Cmdlet 동적 매개 변수
- Windows PowerShell SDK
PowerShell