Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Командлеты могут определять параметры, доступные пользователю в особых условиях, например, если аргумент другого параметра является определенным значением. Эти параметры добавляются во время выполнения и называются динамическими параметрами, так как они добавляются только при необходимости. Например, можно создать командлет, добавляющий несколько параметров, только если указан конкретный [switch] параметр.
Замечание
Поставщики и функции PowerShell также могут определять динамические параметры.
Динамические параметры в командлетах PowerShell
PowerShell использует динамические параметры в нескольких командлетах поставщика. Например, командлеты добавляют параметр CodeSigningCert во время выполнения, Get-ItemGet-ChildItem когда параметр Path указывает путь поставщика сертификата. Если параметр Path указывает путь для другого поставщика, параметр CodeSigningCert недоступен.
В следующих примерах показано, как параметр CodeSigningCert добавляется во время выполнения.Get-Item
В этом примере среда выполнения PowerShell добавила параметр и командлет успешно выполнен.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
В этом примере указан диск FileSystem и возвращается ошибка. Сообщение об ошибке указывает, что не удается найти параметр 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
Поддержка динамических параметров
Для поддержки динамических параметров в код командлета необходимо включить следующие элементы.
Интерфейс
System.Management.Automation.IDynamicParameters. Этот интерфейс предоставляет метод, который получает динамические параметры.
Рассмотрим пример.
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Метод
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Этот метод извлекает объект, содержащий определения динамических параметров.
Рассмотрим пример.
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Класс
Класс, определяющий добавляемые динамические параметры. Этот класс должен включать атрибут Parameter для каждого параметра и любые необязательные атрибуты Псевдонима и проверки , необходимые командлету.
Рассмотрим пример.
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Полный пример командлета, поддерживающего динамические параметры, см. в разделе "Объявление динамических параметров".
См. также
PowerShell