Parancsmag-paraméterkészletek

A PowerShell paraméterkészletekkel teszi lehetővé, hogy egyetlen parancsmagot írjon, amely különböző műveleteket képes különböző forgatókönyvek esetén. A paraméterkészletekkel különböző paramétereket tesz elérhetővé a felhasználó számára. És különböző információkat ad vissza a felhasználó által megadott paraméterek alapján.

Példák paraméterkészletre

A PowerShell-parancsmag például különböző információkat ad vissza attól függően, hogy a felhasználó megadja-e a List vagy Get-EventLog a LogName paramétert. Ha a List paraméter meg van adva, a parancsmag magukról a naplófájlokról ad vissza információkat, az eseményinformációkat azonban nem. Ha a LogName paraméter meg van adva, a parancsmag egy adott eseménynapló eseményeire vonatkozó információkat ad vissza. A List és a LogName paraméter két különálló paraméterkészletet azonosít.

Egyedi paraméter

Minden paraméterkészletnek egyedi paraméterrel kell lennie, hogy a PowerShell-futtatás elérhetővé tegye a megfelelő paraméterkészletet. Ha lehetséges, az egyedi paraméternek kötelező paraméternek kell lennie. Ha egy paraméter kötelező, a felhasználónak meg kell adnia a paramétert, és a PowerShell-futtatás ezt a paramétert használja a paraméterkészlet azonosításához. Az egyedi paraméter nem lehet kötelező, ha a parancsmagot úgy tervezték, hogy paraméterek megadása nélkül fusson.

Több paraméterkészlet

Az alábbi ábrán a bal oldali oszlopban három érvényes paraméterkészlet látható. Az A paraméter az első paraméterkészlet egyedi, a B paraméter a második paraméterkészleten, a C paraméter pedig a harmadik paraméterkészleten egyedi. A jobb oldali oszlopban a paraméterkészletek nem rendelkezik egyedi paraméterrel.

Paraméterkészletek ábrája

Paraméterkészlet-követelmények

Az alábbi követelmények minden paraméterkészletre vonatkoznak.

  • Minden paraméterkészletnek legalább egy egyedi paraméterrel kell lennie. Ha lehetséges, tegye kötelezővé ezt a paramétert.

  • Egy több pozícióparamétert tartalmazó paraméterkészletnek minden paraméterhez egyedi pozíciót kell meghatároznia. Két pozícióparaméter nem adhatja meg ugyanazt a pozíciót.

  • Egy készletben csak egy paraméter deklarálhatja a ValueFromPipeline kulcsszót true értékkel. Több paraméter is definiálhatja ValueFromPipelineByPropertyName a kulcsszót értékkel. true

  • Ha nincs megadva paraméterkészlet egy paraméterhez, a paraméter az összes paraméterkészlethez tartozik.

Megjegyzés

Parancsmagok vagy függvények legfeljebb 32 paraméterkészletet korlátoznak.

Alapértelmezett paraméterkészletek

Több paraméterkészlet definiálása esetén a Parancsmag attribútum DefaultParameterSetName kulcsszóval megadhatja az alapértelmezett paraméterkészletet. A PowerShell az alapértelmezett paraméterkészletet használja, ha nem tudja meghatározni a paraméterkészletet a parancs által megadott információk alapján. A Parancsmag attribútummal kapcsolatos további információkért lásd: Parancsmag-attribútumdeklaráció.

Paraméterkészletek deklarása

Paraméterkészlet létrehozásához meg kell adnia a kulcsszót, amikor deklarálta a Paraméter attribútumot a paraméterkészletben ParameterSetName minden paraméterhez. A több paraméterkészlethez tartozó paraméterekhez minden paraméterkészlethez adjon hozzá egy Paraméter attribútumot. Ez az attribútum lehetővé teszi, hogy a paramétert minden paraméterkészlethez másként definiálja. Például kötelezőként definiálhat egy paramétert az egyik készletben, és nem kötelezőként egy másikban. Azonban minden paraméterkészletnek egy egyedi paramétert kell tartalmaznia. További információ: Paraméterattribútum-deklaráció.

A következő példában a UserName paraméter a paraméterkészlet egyedi paramétere, a ComputerName paraméter pedig a paraméterkészlet Test01 egyedi Test02 paramétere. A SharedParam paraméter mindkét készlethez tartozik, és kötelező a paraméterkészlethez, de nem kötelező Test01 a Test02 paraméterkészlethez.

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