Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Командлеты могут определять параметры, доступные пользователю в особых условиях, например, если аргумент другого параметра является определенным значением. Эти параметры добавляются во время выполнения и называются динамическими параметрами, так как они добавляются только при необходимости. Например, можно создать командлет, добавляющий несколько параметров, только если указан конкретный [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