Parancsmag-paraméterek típusai

Ez a témakör a parancsmagok által deklarálható különböző paramétertípusokat ismerteti. A parancsmagparaméterek pozíció, név, kötelező, választható vagy kapcsolóparaméterek is lehetek.

Pozíció és elnevezett paraméterek

Minden parancsmag-paraméter neves vagy pozícióparaméter. A nevestűs paraméterhez a paraméter nevét és argumentumát kell begépelni a parancsmag hívatakor. A pozícióparaméterhez csak relatív sorrendben kell begépelni az argumentumokat. A rendszer ezután leképezi az első név nélküli argumentumot az első pozícióparaméterre. A rendszer leképezi a második névtelen argumentumot a második, név nélküli paraméterre, és így tovább. Alapértelmezés szerint minden parancsmag-paraméter neve parameters.

Elnevezett paraméter definiálásakor ne adja meg a kulcsszót a Paraméterattribútum-deklarációban, ahogy az a Position következő paraméterdeklarációban látható.

[Parameter(ValueFromPipeline=true)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Pozícióparaméter meghatározásához adja hozzá a kulcsszót a Paraméter attribútumdeklarációhoz, Position majd adjon meg egy pozíciót. A következő mintában a paraméter pozícióparaméterként van UserName deklarálva, 0 pozícióval. Ez azt jelenti, hogy a hívás első argumentuma automatikusan ehhez a paraméterhez lesz kötve.

[Parameter(Position = 0)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Megjegyzés

A parancsmagok jó kialakítása azt javasolja, hogy a leggyakrabban használt paramétereket pozícióparaméterekként deklarálják, így a felhasználónak nem kell megadnia a paraméter nevét a parancsmag futtatásakor.

A pozíciós és elnevezett paraméterek egyetlen vagy több, vesszővel elválasztott argumentumot fogadnak el. Több argumentum használata csak akkor engedélyezett, ha a paraméter elfogad egy gyűjteményt, például egy sztringtömböt. Pozíciós és elnevezett paramétereket is keverhet ugyanabban a parancsmagban. Ebben az esetben a rendszer először lekéri a megnevezett argumentumokat, majd megkísérli leképezni a fennmaradó név nélküli argumentumokat a pozícióparaméterekkel.

Az alábbi parancsok a parancsmag paramétereinek egy és több argumentum megadásának különböző Get-Command módjait mutatják be. Figyelje meg, hogy az utolsó két mintában a -name paramétert nem kell megadni, mert a paraméter pozícióparaméterként Name van definiálva.

Get-Command -Name get-service
Get-Command -Name get-service,set-service
Get-Command get-service
Get-Command get-service,set-service

Kötelező és választható paraméterek

A parancsmag-paraméterek kötelező vagy választható paraméterekként is definiálhatóak. (Kötelező paramétert kell megadni, mielőtt a Windows PowerShell a runtime meghívja a parancsmagot.) Alapértelmezés szerint a paraméterek nem kötelezőként vannak definiálva.

Kötelező paraméter meghatározásához adja hozzá a kulcsszót a Paraméterattribútum-deklarációhoz, és állítsa be a következő paraméterdeklarációban Mandatory true látható módon.

[Parameter(Position = 0, Mandatory = true)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Nem kötelező paraméter definiálása esetén az alábbi paraméterdeklarációban látható módon ne adja meg a kulcsszót a Paraméter Mandatory attribútumdeklarációban.

[Parameter(Position = 0)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Kapcsolóparaméterek

Windows PowerShell olyan System.Management.Automation.SwitchParameter típust biztosít, amely lehetővé teszi egy olyan paraméter definiálása, amelynek az értéke automatikusan értékre van állítva, ha a paraméter nincs megadva a parancsmag false hívatásakor. Amikor csak lehetséges, használjon kapcsolóparamétereket logikai paraméterek helyére.

Tekintse meg az alábbi mintát. Alapértelmezés szerint számos Windows PowerShell parancsmag nem ad át kimeneti objektumot a folyamatnak. Ezek a parancsmagok azonban egy kapcsolóparaméterrel felülbírálják PassThru az alapértelmezett viselkedést. Ha a paraméter meg van adva a parancsmagok hívatásakor, a parancsmag egy kimeneti objektumot ad vissza PassThru a folyamatnak.

Ha arra van szüksége, hogy a paraméter alapértelmezett értéke legyen, amikor a paraméter nincs megadva a hívásban, fontolja meg a paraméter true érzékeltének megfordítása. A példában a paraméterattribútum logikai értékre való beállítása helyett deklaráljuk a tulajdonságot true System.Management.Automation.SwitchParameter típusként, majd állítsa a paraméter alapértelmezett értékét false értékre.

A kapcsolóparaméter meghatározásához deklarálhatja a tulajdonságot System.Management.Automation.SwitchParameter típusként az alábbi mintában látható módon.

[Parameter(Position = 1)]
public SwitchParameter GoodBye
{
  get { return goodbye; }
  set { goodbye = value; }
}
private bool goodbye;

Ahhoz, hogy a parancsmag a paraméter megadásakor is használható legyen, használja a következő struktúrát az egyik bemeneti feldolgozási módszerben.

protected override void ProcessRecord()
{
  WriteObject("Switch parameter test: " + userName + ".");
  if(goodbye)
  {
    WriteObject(" Goodbye!");
  }
} // End ProcessRecord

Lásd még:

Windows PowerShell-parancsmag írása