Динамические параметры командлета

Командлеты могут определять параметры, доступные пользователю в особых условиях, например, если аргумент другого параметра является определенным значением. Эти параметры добавляются во время выполнения и называются динамическими параметрами, так как они добавляются только при необходимости. Например, можно создать командлет, добавляющий несколько параметров только в том случае, если указан определенный параметр Switch.

Примечание

Поставщики и функции PowerShell также могут определять динамические параметры.

Динамические параметры в командлетах PowerShell

PowerShell использует динамические параметры в нескольких командлетах поставщика. Например, Get-Item Get-ChildItem командлеты и добавляют параметр CodeSigningCert во время выполнения, когда параметр path указывает путь к поставщику сертификата . Если параметр path задает путь для другого поставщика, параметр CodeSigningCert недоступен.

В следующих примерах показано, как параметр CodeSigningCert добавляется во время выполнения при Get-Item запуске.

В этом примере среда выполнения PowerShell добавила параметр, а командлет — успешно.

Get-Item -Path cert:\CurrentUser -CodeSigningCert
Location   : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}

В этом примере указывается диск файловой системы, и возвращается ошибка. Сообщение об ошибке указывает, что не удается найти параметр 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. идинамикпараметерс. Этот интерфейс предоставляет метод, который получает динамические параметры.

Пример:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

Метод

System. Management. Automation. идинамикпараметерс. жетдинамикпараметерс. Этот метод извлекает объект, содержащий определения динамических параметров.

Например:

 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;
}

Полный пример командлета, поддерживающего динамические параметры, см. в разделе Объявление динамических параметров.

См. также раздел

System. Management. Automation. Идинамикпараметерс

System. Management. Automation. Идинамикпараметерс. Жетдинамикпараметерс

Как объявить динамические параметры

Запись командлета Windows PowerShell