Delen via


Typen cmdlet-parameters

In dit onderwerp worden de verschillende typen parameters beschreven die u kunt declareeren in cmdlets. Cmdlet-parameters kunnen positioneel, benoemd, vereist, optioneel of switchparameters zijn.

Positionele en benoemde parameters

Alle cmdlet-parameters zijn benoemde parameters of positionele parameters. Een benoemde parameter vereist dat u de parameternaam en het argument typt bij het aanroepen van de cmdlet. Een positionele parameter vereist alleen dat u de argumenten in relatieve volgorde typt. Het systeem wijs vervolgens het eerste niet-naamloze argument toe aan de eerste positionele parameter. Het systeem wijs het tweede niet-naamloze argument toe aan de tweede parameter zonder naam, en meer. Standaard worden alle cmdlet-parameters parameters genoemd.

Als u een benoemde parameter wilt definiëren, laat u het sleutelwoord Position weg in de kenmerkdeclaratie Parameter, zoals wordt weergegeven in de volgende parameterdeclaratie.

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

Als u een positionele parameter wilt definiëren, voegt u het trefwoord toe in de declaratie Position parameterkenmerk en geeft u vervolgens een positie op. In het volgende voorbeeld wordt de UserName parameter gedeclareerd als een positionele parameter met positie 0. Dit betekent dat het eerste argument van de aanroep automatisch aan deze parameter wordt gebonden.

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

Notitie

Een goed cmdlet-ontwerp raadt aan dat de meest gebruikte parameters worden gedeclareerd als positionele parameters, zodat de gebruiker de parameternaam niet hoeft in te voeren wanneer de cmdlet wordt uitgevoerd.

Positionele en benoemde parameters accepteren enkele argumenten of meerdere argumenten gescheiden door komma's. Meerdere argumenten zijn alleen toegestaan als de parameter een verzameling accepteert, zoals een matrix met tekenreeksen. U kunt positionele en benoemde parameters combineren in dezelfde cmdlet. In dit geval haalt het systeem eerst de benoemde argumenten op en probeert het vervolgens de resterende niet-naamloze argumenten toe te passen aan de positionele parameters.

De volgende opdrachten tonen de verschillende manieren waarop u een en meerdere argumenten voor de parameters van de Get-Command cmdlet kunt opgeven. U ziet dat in de laatste twee voorbeelden -name niet hoeft te worden opgegeven omdat de Name parameter is gedefinieerd als een positionele parameter.

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

Verplichte en optionele parameters

U kunt ook cmdlet-parameters definiëren als verplichte of optionele parameters. (Er moet een verplichte parameter worden opgegeven voordat de Windows PowerShell cmdlet aanroept.) Parameters worden standaard gedefinieerd als optioneel.

Als u een verplichte parameter wilt definiëren, voegt u het trefwoord toe in de kenmerkdeclaratie Parameter en stelt u deze in op , zoals Mandatory wordt weergegeven in de volgende true parameterdeclaratie.

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

Als u een optionele parameter wilt definiëren, laat u het trefwoord Mandatory weg in de kenmerkdeclaratie Parameter, zoals wordt weergegeven in de volgende parameterdeclaratie.

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

Schakelparameters

Windows PowerShell biedt een type System.Management.Automation.SwitchParameter waarmee u een parameter kunt definiëren waarvan de waarde automatisch wordt ingesteld op als de parameter niet is opgegeven wanneer de false cmdlet wordt aangeroepen. Gebruik indien mogelijk switchparameters in plaats van Booleaanse parameters.

Kijk eens naar het volgende voorbeeld. Standaard geven verschillende Windows PowerShell-cmdlets geen uitvoerobject door in de pijplijn. Deze cmdlets hebben echter een PassThru switchparameter die het standaardgedrag overschrijven. Als de parameter wordt opgegeven wanneer deze cmdlets worden aangeroepen, retourneert de PassThru cmdlet een uitvoerobject naar de pijplijn.

Als u wilt dat de parameter een standaardwaarde heeft van wanneer de parameter niet is opgegeven in de aanroep, kunt u overwegen om de betekenis van true de parameter om tekeren. Voor het voorbeeld declareert u in plaats van het parameterkenmerk in te stellen op een Booleaanse waarde van , de eigenschap als true het type System.Management.Automation.SwitchParameter en stelt u de standaardwaarde van de parameter in op false .

Als u een switchparameter wilt definiëren, declareert u de eigenschap als het type System.Management.Automation.SwitchParameter, zoals wordt weergegeven in het volgende voorbeeld.

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

Als u de cmdlet wilt laten reageren op de parameter wanneer deze is opgegeven, gebruikt u de volgende structuur binnen een van de invoerverwerkingsmethoden.

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

Zie ook

Een Windows PowerShell-cmdlet schrijven