Cmdlet Parametre Setleri
PowerShell, farklı senaryolar için farklı eylemler gerçekleştirebilecek tek bir cmdlet yazmanıza olanak sağlamak için parametre kümelerini kullanır. Parametre setleri, kullanıcıya farklı parametreler sunmanıza olanak tanır. Ve kullanıcı tarafından belirlenen parametrelere göre farklı bilgiler döndürmek için.
Parametre seti örnekleri
Örneğin, PowerShell Get-EventLog cmdlet'i, kullanıcının List veya LogName parametresini belirtmesine bağlı olarak farklı bilgiler döndürür. List parametresi belirtilirse cmdlet, günlük dosyalarının kendisiyle ilgili bilgileri döndürür ancak içerdikleri etkinlik bilgilerini döndürmez. LogName parametresi belirtilirse cmdlet, belirli bir olay günlüğündeki olaylarla ilgili bilgileri döndürür. List ve LogName parametreleri iki ayrı parametre kümesini tanımlar.
Benzersiz parametre
Her parametre kümesinin, PowerShell çalışma zamanının uygun parametre kümesini kullanıma sunmak için kullandığı benzersiz bir parametresi olmalıdır. Mümkünse benzersiz parametre zorunlu bir parametre olmalıdır. Bir parametre zorunlu olduğunda kullanıcının parametreyi belirtmesi gerekir ve PowerShell çalışma zamanı, parametre kümesini tanımlamak için bu parametreyi kullanır. Cmdlet'iniz herhangi bir parametre belirtmeden çalışacak şekilde tasarlandıysa benzersiz parametre zorunlu olamaz.
Çoklu parametre setleri
Aşağıdaki çizimde sol sütunda üç geçerli parametre seti gösterilmektedir. A Parametresi ilk parametre grubuna özeldir, B parametresi ikinci parametre grubuna özeldir ve C parametresi üçüncü parametreye özeldir ayarlamak. Sağ sütunda parametre kümelerinin benzersiz bir parametresi yoktur.
Parametre seti gereksinimleri
Aşağıdaki gereksinimler tüm parametre setleri için geçerlidir.
Her parametre setinde en az bir benzersiz parametre bulunmalıdır. Mümkünse bu parametreyi zorunlu parametre yapın.
Birden fazla konumsal parametre içeren bir parametre kümesinin, her parametre için benzersiz konumlar tanımlaması gerekir. İki konumsal parametre aynı konumu belirtemez.
Bir kümedeki yalnızca bir parametre
ValueFromPipelineanahtar sözcüğünütruedeğeriyle bildirebilir. Birden fazla parametre,ValueFromPipelineByPropertyNameanahtar kelimesinitruedeğeriyle tanımlayabilir.Bir parametre için parametre seti belirtilmemişse parametre tüm parametre setlerine aittir.
Not
Bir cmdlet veya işlev için 32 parametre kümesi sınırı vardır.
Varsayılan parametre setleri
Birden çok parametre kümesi tanımlandığında, varsayılan parametre kümesini belirtmek için Cmdlet özelliğinin DefaultParameterSetName anahtar kelimesini kullanabilirsiniz. PowerShell, komut tarafından sağlanan bilgilere göre kullanılacak parametre kümesini belirleyemezse varsayılan parametre kümesini kullanır. Cmdlet özelliği hakkında daha fazla bilgi için bkz. Cmdlet Öznitelik Bildirimi.
Parametre setlerinin bildirilmesi
Bir parametre seti oluşturmak için, parametre setindeki her parametre için Parameter özelliğini bildirirken ParameterSetName anahtar kelimesini belirtmeniz gerekir. Birden fazla parametre grubuna ait olan parametreler için, her parametre grubuna bir Parametre özelliği ekleyin. Bu özellik, her parametre seti için parametreyi farklı şekilde tanımlamanıza olanak sağlar. Örneğin bir parametreyi bir sette zorunlu, diğerinde ise isteğe bağlı olarak tanımlayabilirsiniz. Ancak her parametre setinde benzersiz bir parametre bulunmalıdır. Daha fazla bilgi için bkz. Parametre Öznitelik Bildirimi.
Aşağıdaki örnekte, KullanıcıAdı parametresi Test01 parametre kümesinin benzersiz parametresidir ve BilgisayarAdı parametresi <'nin benzersiz parametresidir.Test02 parametre seti. SharedParam parametresi her iki kümeye de aittir ve Test01 parametre kümesi için zorunludur, ancak Test02 parametre kümesi için isteğe bağlıdır.
[Parameter(Position = 0, Mandatory = true, ParameterSetName = "Test01")]
public string UserName
{
get { return userName; }
set { userName = value; }
}
private string userName;
[Parameter(Position = 0, Mandatory = true, ParameterSetName = "Test02")]
public string ComputerName
{
get { return computerName; }
set { computerName = value; }
}
private string computerName;
[Parameter(Mandatory= true, ParameterSetName = "Test01")]
[Parameter(ParameterSetName = "Test02")]
public string SharedParam
{
get { return sharedParam; }
set { sharedParam = value; }
}
private string sharedParam;
