Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Командлеты могут определять параметры, доступные пользователю в особых условиях, например, если аргумент другого параметра является определенным значением. Эти параметры добавляются во время выполнения и называются динамическими параметрами, так как они добавляются только при необходимости. Например, можно создать командлет, добавляющий несколько параметров только в том случае, если указан определенный параметр 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. Идинамикпараметерс. Жетдинамикпараметерс