Parancsmag-paraméterek készleteiCmdlet parameter sets

A PowerShell paraméter-készleteket használva lehetővé teszi egy olyan parancsmag megírását, amely különböző műveleteket végezhet el különböző helyzetekben.PowerShell uses parameter sets to enable you to write a single cmdlet that can do different actions for different scenarios. A paraméterek lehetővé teszik, hogy különböző paramétereket tegyen elérhetővé a felhasználó számára.Parameter sets enable you to expose different parameters to the user. És ha a felhasználó által megadott paraméterek alapján különböző adatokat szeretne visszaadni.And, to return different information based on the parameters specified by the user.

Példák a paraméterek készletéreExamples of parameter sets

A PowerShell-parancsmag például Get-EventLog különböző adatokat ad vissza attól függően, hogy a felhasználó megadja-e a listát vagy a LogName paramétert.For example, the PowerShell Get-EventLog cmdlet returns different information depending on whether the user specifies the List or LogName parameter. Ha meg van adva a List paraméter, a parancsmag magára a naplófájlokra vonatkozó adatokat ad vissza, de nem tartalmazza a bennük lévő esemény adatait.If the List parameter is specified, the cmdlet returns information about the log files themselves but not the event information they contain. Ha a LogName paraméter meg van adva, a parancsmag adatokat ad vissza egy adott Eseménynapló eseményeiről.If the LogName parameter is specified, the cmdlet returns information about the events in a specific event log. A lista -és LogName paraméterek két különálló paramétert azonosítanak.The List and LogName parameters identify two separate parameter sets.

Egyedi paraméterUnique parameter

Minden paraméter-készletnek egyedi paraméterrel kell rendelkeznie, amelyet a PowerShell-futtatókörnyezet a megfelelő beállításhalmaz számára tesz elérhetővé.Each parameter set must have a unique parameter that the PowerShell runtime uses to expose the appropriate parameter set. Ha lehetséges, az egyedi paraméternek kötelező paraméternek kell lennie.If possible, the unique parameter should be a mandatory parameter. Ha egy paraméter megadása kötelező, a felhasználónak meg kell adnia a paramétert, a PowerShell-futtatókörnyezet pedig ezt a paramétert használja a beállított paraméterek azonosítására.When a parameter is mandatory, the user must specify the parameter, and the PowerShell runtime uses that parameter to identify the parameter set. Az egyedi paraméter nem lehet kötelező, ha a parancsmagot paraméterek megadása nélkül tervezték futtatni.The unique parameter can't be mandatory if your cmdlet is designed to run without specifying any parameters.

Több paraméter-készletMultiple parameter sets

A következő ábrán a bal oldali oszlop három érvényes paraméter-készletet jelenít meg.In the following illustration, the left column shows three valid parameter sets. Az a paraméter az első beállításhalmaz esetében egyedi, a B paraméter egyedi a második paraméter számára, és a C paraméter egyedi a harmadik paraméter készletében.Parameter A is unique to the first parameter set, parameter B is unique to the second parameter set, and parameter C is unique to the third parameter set. A jobb oldali oszlopban a paraméterek nem rendelkeznek egyedi paraméterrel.In the right column, the parameter sets don't have a unique parameter.

Paraméter-készletek illusztrációja

Paraméterek beállítása – követelményekParameter set requirements

Az alábbi követelmények minden paraméter-készletre érvényesek.The following requirements apply to all parameter sets.

  • Minden paraméter-készletnek legalább egy egyedi paraméterrel kell rendelkeznie.Each parameter set must have at least one unique parameter. Ha lehetséges, ezt a paramétert kötelező paraméterként hajtsa végre.If possible, make this parameter a mandatory parameter.

  • A több pozíciós paramétert tartalmazó paraméterérték egyedi pozíciókat kell meghatároznia az egyes paraméterekhez.A parameter set that contains multiple positional parameters must define unique positions for each parameter. A két pozíciós paraméter nem adhat meg ugyanazt a pozíciót.No two positional parameters can specify the same position.

  • Egy készleten belül csak egy paraméter deklarálhatja a ValueFromPipeline kulcsszót a következő értékkel: true .Only one parameter in a set can declare the ValueFromPipeline keyword with a value of true. Több paraméter is meghatározhatja a ValueFromPipelineByPropertyName kulcsszó értékét true .Multiple parameters can define the ValueFromPipelineByPropertyName keyword with a value of true.

  • Ha nem ad meg paramétert egy paraméterhez, a paraméter az összes paraméter-készlethez tartozik.If no parameter set is specified for a parameter, the parameter belongs to all parameter sets.

Megjegyzés

Parancsmagok vagy függvények esetén a 32-es paraméterek száma korlátozott.For a cmdlet or function, there is a limit of 32 parameter sets.

Alapértelmezett paraméter-készletekDefault parameter sets

Ha több paraméterérték van definiálva, a DefaultParameterSetName parancsmag attribútum kulcsszava segítségével megadhatja az alapértelmezett paramétert.When multiple parameter sets are defined, you can use the DefaultParameterSetName keyword of the Cmdlet attribute to specify the default parameter set. A PowerShell az alapértelmezett paramétert használja, ha nem tudja meghatározni a használni kívánt paramétert a parancs által megadott információk alapján.PowerShell uses the default parameter set if it can't determine the parameter set to use based on the information provided by the command. További információ a parancsmag attribútumáról: parancsmag- attribútum deklarációja.For more information about the Cmdlet attribute, see Cmdlet Attribute Declaration.

Paraméter-készletek deklarálásaDeclaring parameter sets

A beállításhalmaz létrehozásához meg kell adnia a ParameterSetName kulcsszót, amikor deklarálja a paraméter attribútumot a paraméterben szereplő minden paraméterhez.To create a parameter set, you must specify the ParameterSetName keyword when you declare the Parameter attribute for every parameter in the parameter set. Több paraméterhez tartozó paramétereknél adjon hozzá egy Parameters attribútumot az egyes paraméterekhez.For parameters that belong to multiple parameter sets, add a Parameter attribute for each parameter set. Ez az attribútum lehetővé teszi, hogy a paramétert az egyes beállított paraméterektől eltérően határozza meg.This attribute enables you to define the parameter differently for each parameter set. Megadhat például egy paramétert kötelezőként egy készletben, és opcionálisan egy másikban.For example, you can define a parameter as mandatory in one set and optional in another. Azonban minden egyes paraméternek egy egyedi paramétert kell tartalmaznia.However, each parameter set must contain one unique parameter. További információ: paraméter- attribútum deklarációja.For more information, see Parameter Attribute Declaration.

A következő példában a username paraméter a Test01 set paraméter egyedi paramétere, a számítógépnév paraméter pedig a Test02 beállított paraméter egyedi paramétere.In the following example, the UserName parameter is the unique parameter of the Test01 parameter set, and the ComputerName parameter is the unique parameter of the Test02 parameter set. A SharedParam paraméter mindkét készlethez tartozik, és kötelező megadni a Test01 paramétert, de a paraméter értéke nem kötelező Test02 .The SharedParam parameter belongs to both sets and is mandatory for the Test01 parameter set but optional for the Test02 parameter set.

[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;