Typer av cmdlet-parametrar

I det här avsnittet beskrivs de olika typer av parametrar som du kan deklarera i cmdlets. Cmdlet-parametrar kan vara positionella, namngivna, obligatoriska, valfria eller växelparametrar.

Positionsparametrar och namngivna parametrar

Alla cmdlet-parametrar är antingen namngivna eller positionsparametrar. En namngiven parameter kräver att du anger parameternamnet och argumentet när du anropar cmdleten. En positionsparameter kräver bara att du anger argumenten i relativ ordning. Systemet mappar sedan det första namnlösa argumentet till den första positionsparametern. Systemet mappar det andra icke-namnade argumentet till den andra namnlösa parametern och så vidare. Som standard är alla cmdlet-parametrar namngivna parametrar.

Om du vill definiera en namngiven parameter utelämnar du nyckelordet i Position parameterattributdeklarationen, som du ser i följande parameterdeklaration.

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

Om du vill definiera en positionsparameter lägger du Position till nyckelordet i deklarationen Parameterattribut och anger sedan en position. I följande exempel deklareras UserName parametern som en positionsparameter med position 0. Det innebär att det första argumentet i anropet automatiskt binds till den här parametern.

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

Anteckning

En bra cmdlet-design rekommenderar att de mest använda parametrarna deklareras som positionsparametrar så att användaren inte behöver ange parameternamnet när cmdleten körs.

Positionsparametrar och namngivna parametrar accepterar enskilda argument eller flera argument avgränsade med kommatecken. Flera argument tillåts bara om parametern accepterar en samling, till exempel en matris med strängar. Du kan blanda positionsparametrar och namngivna parametrar i samma cmdlet. I det här fallet hämtar systemet först de namngivna argumenten och försöker sedan mappa återstående namnlösa argument till positionsparametrarna.

Följande kommandon visar de olika sätt som du kan ange enkla och flera argument för Get-Command cmdletens parametrar. Observera att i de två sista exemplen behöver -name inte anges eftersom Name parametern definieras som en positionsparameter.

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

Obligatoriska och valfria parametrar

Du kan också definiera cmdlet-parametrar som obligatoriska eller valfria parametrar. (En obligatorisk parameter måste anges innan Windows PowerShell körtid anropar cmdleten.) Som standard definieras parametrar som valfria.

Om du vill definiera en obligatorisk parameter lägger du till nyckelordet i deklarationen Parameterattribut och anger det till Mandatory , som du ser i följande true parameterdeklaration.

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

Om du vill definiera en valfri parameter utelämnar du Mandatory nyckelordet i parameterattributdeklarationen, som du ser i följande parameterdeklaration.

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

Växelparametrar

Windows PowerShell har en Typ av System.Management.Automation.SwitchParameter som gör att du kan definiera en parameter vars värde anges automatiskt till om parametern inte anges när false cmdleten anropas. Använd om möjligt växelparametrar i stället för booleska parametrar.

Överväg följande exempel. Som standard skickar flera Windows PowerShell-cmdlets inte ett utdataobjekt nedåt i pipelinen. Dessa cmdlets har dock en PassThru växlingsparameter som åsidosätter standardbeteendet. Om PassThru parametern anges när dessa cmdlets anropas returnerar cmdleten ett utdataobjekt till pipelinen.

Om du vill att parametern ska ha standardvärdet när parametern inte har angetts i anropet kan du överväga att true ångra parameterns betydelse. I stället för att ange parameterattributet till ett booleskt värde för , deklarerar du egenskapen som true typen System.Management.Automation.SwitchParameter och anger sedan standardvärdet för parametern till false .

Om du vill definiera en växlingsparameter deklarerar du egenskapen som typen System.Management.Automation.SwitchParameter, enligt följande exempel.

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

Om du vill att cmdleten ska fungera på parametern när den anges använder du följande struktur inom en av indatabearbetningsmetoderna.

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

Se även

Skriva en Windows PowerShell-cmdlet