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.
Cmdlets können Parameter definieren, die dem Benutzer unter besonderen Bedingungen zur Verfügung stehen, z. B. wenn das Argument eines anderen Parameters ein bestimmter Wert ist. Diese Parameter werden zur Laufzeit hinzugefügt und als dynamische Parameter bezeichnet, da sie nur bei Bedarf hinzugefügt werden. Sie können beispielsweise ein Cmdlet entwerfen, das nur dann mehrere Parameter hinzufügt, wenn ein bestimmter Switchparameter angegeben wird.
Hinweis
Anbieter und PowerShell-Funktionen können auch dynamische Parameter definieren.
Dynamische Parameter in PowerShell-Cmdlets
PowerShell verwendet dynamische Parameter in mehreren seiner Anbieter-Cmdlets. Beispielsweise fügen die Cmdlets Get-Item
und Get-ChildItem
zur Laufzeit einen CodeSigningCert Parameter hinzu, wenn der parameter Path den Zertifikat Anbieterpfad angibt. Wenn der parameter Path einen Pfad für einen anderen Anbieter angibt, ist der CodeSigningCert Parameter nicht verfügbar.
Die folgenden Beispiele zeigen, wie der CodeSigningCert Parameter zur Laufzeit hinzugefügt wird, wenn Get-Item
ausgeführt wird.
In diesem Beispiel hat die PowerShell-Laufzeit den Parameter hinzugefügt, und das Cmdlet ist erfolgreich.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
In diesem Beispiel wird ein FileSystem- Laufwerk angegeben und ein Fehler zurückgegeben. Die Fehlermeldung gibt an, dass der CodeSigningCert Parameter nicht gefunden werden kann.
Get-Item -Path C:\ -CodeSigningCert
Get-Item : A parameter cannot be found that matches parameter name 'CodeSigningCert'.
At line:1 char:37
+ Get-Item -Path C:\ -CodeSigningCert <<<<
--------
CategoryInfo : InvalidArgument: (:) [Get-Item], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand
Unterstützung für dynamische Parameter
Zur Unterstützung dynamischer Parameter müssen die folgenden Elemente im Cmdlet-Code enthalten sein.
Schnittstelle
System.Management.Automation.IDynamicParameters. Diese Schnittstelle stellt die Methode bereit, mit der die dynamischen Parameter abgerufen werden.
Beispiel:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Methode
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Diese Methode ruft das Objekt ab, das die dynamischen Parameterdefinitionen enthält.
Beispiel:
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Klasse
Eine Klasse, die die hinzuzufügenden dynamischen Parameter definiert. Diese Klasse muss ein Parameter-attribut für jeden Parameter und alle optionalen Alias und Validation Attribute enthalten, die vom Cmdlet benötigt werden.
Beispiel:
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Ein vollständiges Beispiel für ein Cmdlet, das dynamische Parameter unterstützt, finden Sie unter How to Declare Dynamic Parameters.