Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Contoh ini menunjukkan cara menentukan parameter dinamis yang ditambahkan ke cmdlet saat runtime. Dalam contoh ini, parameter Department
ditambahkan ke cmdlet setiap kali pengguna menentukan parameter sakelar Employee
. Untuk informasi selengkapnya tentang parameter dinamis, lihat Parameter Dinamis Cmdlet .
Untuk menentukan parameter dinamis
Dalam deklarasi kelas cmdlet, tambahkan antarmuka System.Management.Automation.IDynamicParameters seperti yang ditunjukkan.
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Panggil metode System.Management.Automation.IDynamicParameters.GetDynamicParameters*, yang mengembalikan objek tempat parameter dinamis ditentukan. Dalam contoh ini, metode dipanggil ketika parameter
Employee
ditentukan.public object GetDynamicParameters() { if (employee) { context= new SendGreetingCommandDynamicParameters(); return context; } return null; } private SendGreetingCommandDynamicParameters context;
Deklarasikan kelas yang menentukan parameter dinamis yang akan ditambahkan. Anda dapat menggunakan atribut yang Anda gunakan untuk mendeklarasikan parameter cmdlet statis untuk mendeklarasikan parameter dinamis.
public class SendGreetingCommandDynamicParameters { [Parameter] [ValidateSet ("Marketing", "Sales", "Development")] public string Department { get { return department; } set { department = value; } } private string department; }
Contoh
Dalam contoh ini, parameter Department
ditambahkan setiap kali pengguna menentukan parameter Employee
. Parameter Department
adalah parameter opsional, dan atribut ValidateSet digunakan untuk menentukan argumen yang diizinkan.
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;
}
}