Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Polecenia cmdlet mogą definiować parametry, które są dostępne dla użytkownika w specjalnych warunkach, na przykład gdy argument innego parametru jest określoną wartością. Te parametry są dodawane w czasie wykonywania i są określane jako parametry dynamiczne, ponieważ są dodawane tylko w razie potrzeby. Można na przykład zaprojektować polecenie cmdlet, które dodaje kilka parametrów tylko wtedy, gdy określony parametr przełącznika jest określony.
Uwaga
Dostawcy i funkcje programu PowerShell mogą również definiować parametry dynamiczne.
Parametry dynamiczne w poleceniach cmdlet programu PowerShell
Program PowerShell używa parametrów dynamicznych w kilku poleceniach cmdlet dostawcy. Na przykład polecenia cmdlet Get-Item i Get-ChildItem dodają parametr CodeSigningCert w czasie wykonywania, gdy parametr ścieżka określa ścieżkę dostawcy certyfikatu. Jeśli parametr ścieżka określa ścieżkę innego dostawcy, parametr CodeSigningCert jest niedostępny.
W poniższych przykładach pokazano, jak parametr CodeSigningCert jest dodawany w czasie wykonywania po uruchomieniu Get-Item.
W tym przykładzie środowisko uruchomieniowe programu PowerShell dodało parametr i polecenie cmdlet zakończyło się pomyślnie.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
W tym przykładzie określono dysk FileSystem i zwracany jest błąd. Komunikat o błędzie wskazuje, że nie można odnaleźć parametru CodeSigningCert.
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
Obsługa parametrów dynamicznych
Aby obsługiwać parametry dynamiczne, należy uwzględnić następujące elementy w kodzie polecenia cmdlet.
Interfejs
System.Management.Automation.IDynamicParameters. Ten interfejs udostępnia metodę pobierającą parametry dynamiczne.
Na przykład:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Metoda
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Ta metoda pobiera obiekt zawierający definicje parametrów dynamicznych.
Na przykład:
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Klasa
Klasa, która definiuje parametry dynamiczne do dodania. Ta klasa musi zawierać atrybut parametru dla każdego parametru oraz opcjonalny alias i atrybuty weryfikacji weryfikacji wymagane przez polecenie cmdlet.
Na przykład:
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Pełny przykład polecenia cmdlet obsługującego parametry dynamiczne można znaleźć w Jak zadeklarować parametry dynamiczne.