Parametry dynamiczne polecenia cmdlet
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ą nazywane parametrami dynamicznymi, ponieważ są dodawane tylko w razie potrzeby. Na przykład można zaprojektować polecenie cmdlet, które dodaje kilka parametrów tylko wtedy, gdy określono określony parametr przełącznika.
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 i dodają Get-Item
Get-ChildItem
parametr CodeSigningCert w czasie wykonywania, gdy parametr Ścieżka określa ścieżkę dostawcy certyfikatów. Jeśli ścieżka parametr określa ścieżkę dla innego dostawcy, parametr CodeSigningCert nie jest dostępny.
Poniższe przykłady pokazują, jak parametr CodeSigningCert jest dodawany w czasie wykonywania Get-Item
po uruchomieniu.
W tym przykładzie środowisko uruchomieniowe programu PowerShell dodało parametr , a polecenie cmdlet zostało pomyślnie dodane.
Get-Item -Path cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
W tym przykładzie określono dysk FileSystem i zostanie zwrócony 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 zapewnić obsługę parametrów dynamicznych, w kodzie polecenia cmdlet muszą znajdować się następujące elementy.
Interfejs
System.Management.Automation.IDynamicParameters. Ten interfejs udostępnia metodę , która pobiera parametry dynamiczne.
Na przykład:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Metoda
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Ta metoda pobiera obiekt, który zawiera 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 Parameter dla każdego parametru oraz wszelkie opcjonalne atrybuty aliasu i walidacji, które są 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;
}
Aby uzyskać kompletny przykład polecenia cmdlet obsługującego parametry dynamiczne, zobacz Jak zadeklarować parametry dynamiczne.
Zobacz też
System.Management.Automation.IDynamicParameters
System.Management.Automation.IDynamicParameters.GetDynamicParameters
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla