Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
PowerShell verwendet Parametersätze, damit Sie ein einzelnes Cmdlet schreiben können, das verschiedene Aktionen für verschiedene Szenarien ausführen kann. Mit Parametersätzen können Sie verschiedene Parameter für den Benutzer verfügbar machen. Und, um unterschiedliche Informationen basierend auf den vom Benutzer angegebenen Parametern zurück zu geben.
Beispiele für Parametersätze
Das PowerShell-Cmdlet gibt beispielsweise unterschiedliche Informationen zurück, je nachdem, ob der Benutzer Get-EventLog den Parameter List oder LogName angibt. Wenn der List-Parameter angegeben wird, gibt das Cmdlet Informationen zu den Protokolldateien selbst zurück, jedoch nicht zu den Ereignisinformationen, die sie enthalten. Wenn der LogName-Parameter angegeben wird, gibt das Cmdlet Informationen zu den Ereignissen in einem bestimmten Ereignisprotokoll zurück. Die Parameter List und LogName identifizieren zwei separate Parametersätze.
Eindeutiger Parameter
Jeder Parametersatz muss über einen eindeutigen Parameter verfügen, den die PowerShell-Runtime verwendet, um den entsprechenden Parametersatz verfügbar zu machen. Wenn möglich, sollte der eindeutige Parameter ein obligatorischer Parameter sein. Wenn ein Parameter obligatorisch ist, muss der Benutzer den Parameter angeben, und die PowerShell-Runtime verwendet diesen Parameter, um den Parametersatz zu identifizieren. Der eindeutige Parameter kann nicht obligatorisch sein, wenn Ihr Cmdlet für die Ausführung ohne Angabe von Parametern konzipiert ist.
Mehrere Parametersätze
In der folgenden Abbildung zeigt die linke Spalte drei gültige Parametersätze. Parameter A ist für den ersten Parametersatz eindeutig, Parameter B ist für den zweiten Parametersatz eindeutig, und Parameter C ist für den dritten Parametersatz eindeutig. In der rechten Spalte haben die Parametersätze keinen eindeutigen Parameter.

Parametersatzanforderungen
Die folgenden Anforderungen gelten für alle Parametersätze.
Jeder Parametersatz muss mindestens einen eindeutigen Parameter haben. Machen Sie diesen Parameter nach Möglichkeit zu einem obligatorischen Parameter.
Ein Parametersatz, der mehrere Positionsparameter enthält, muss eindeutige Positionen für jeden Parameter definieren. Keine zwei Positionsparameter können dieselbe Position angeben.
Nur ein Parameter in einem Satz kann das Schlüsselwort mit
ValueFromPipelinedem Wert deklarieren.trueMehrere Parameter können das SchlüsselwortValueFromPipelineByPropertyNamemit dem Werttruedefinieren.Wenn für einen Parameter kein Parametersatz angegeben wird, gehört der Parameter zu allen Parametersätzen.
Hinweis
Für ein Cmdlet oder eine Funktion gilt ein Grenzwert von 32 Parametersätzen.
Standardparametersätze
Wenn mehrere Parametersätze definiert sind, können Sie das Schlüsselwort des Cmdlet-Attributs verwenden, DefaultParameterSetName um den Standardparametersatz anzugeben. PowerShell verwendet den Standardparametersatz, wenn der zu verwendende Parametersatz nicht anhand der vom Befehl bereitgestellten Informationen bestimmt werden kann. Weitere Informationen zum Cmdlet-Attribut finden Sie unter Cmdlet-Attributdeklaration.
Deklarieren von Parametersätzen
Um einen Parametersatz zu erstellen, müssen Sie das Schlüsselwort angeben, wenn Sie das Parameterattribut für jeden Parameter ParameterSetName im Parametersatz deklarieren. Fügen Sie für Parameter, die zu mehreren Parametersätzen gehören, ein Parameterattribut für jeden Parametersatz hinzu. Mit diesem Attribut können Sie den Parameter für jeden Parametersatz unterschiedlich definieren. Beispielsweise können Sie einen Parameter in einem Satz als obligatorisch und in einem anderen optional definieren. Jeder Parametersatz muss jedoch einen eindeutigen Parameter enthalten. Weitere Informationen finden Sie unter ParameterAttributdeklaration.
Im folgenden Beispiel ist der UserName-Parameter der eindeutige Parameter des Parametersets, und der ComputerName-Parameter ist der eindeutige Parameter Test01 des Test02 Parametersets. Der SharedParam-Parameter gehört zu beiden Sätzen und ist für den Test01 Parametersatz obligatorisch, aber für den Test02 Parametersatz optional.
[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;