Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os cmdlets podem definir parâmetros que estão disponíveis para o usuário em condições especiais, como quando o argumento de outro parâmetro é um valor específico. Esses parâmetros são adicionados em runtime e são chamados de parâmetros dinâmicos porque são adicionados somente quando necessário. Por exemplo, você pode projetar um cmdlet que adiciona vários parâmetros somente quando um parâmetro de comutador específico é especificado.
Observação
Provedores e funções do PowerShell também podem definir parâmetros dinâmicos.
Parâmetros dinâmicos em cmdlets do PowerShell
O PowerShell usa parâmetros dinâmicos em vários de seus cmdlets de provedor. Por exemplo, os cmdlets Get-Item e Get-ChildItem adicionam um parâmetro CodeSigningCert em runtime quando o parâmetro Path especifica o caminho do provedor Certificate. Se o parâmetro Path especificar um caminho para um provedor diferente, o parâmetro CodeSigningCert não estará disponível.
Os exemplos a seguir mostram como o parâmetro CodeSigningCert é adicionado em runtime quando Get-Item é executado.
Neste exemplo, o runtime do PowerShell adicionou o parâmetro e o cmdlet foi bem-sucedido.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
Neste exemplo, uma unidade FileSystem é especificada e um erro é retornado. A mensagem de erro indica que o parâmetro CodeSigningCert não pode ser encontrado.
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
Suporte para parâmetros dinâmicos
Para dar suporte a parâmetros dinâmicos, os seguintes elementos devem ser incluídos no código do cmdlet.
Interface
System.Management.Automation.IDynamicParameters . Essa interface fornece o método que recupera os parâmetros dinâmicos.
Por exemplo:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Método
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Esse método recupera o objeto que contém as definições de parâmetro dinâmico.
Por exemplo:
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Classe
Uma classe que define os parâmetros dinâmicos a serem adicionados. Essa classe deve incluir um atributo Parameter para cada parâmetro e quaisquer atributos opcionais Alias e Validation necessários para o cmdlet.
Por exemplo:
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Para obter um exemplo completo de um cmdlet que dá suporte a parâmetros dinâmicos, consulte How to Declare Dynamic Parameters.
Consulte também
- System.Management.Automation.IDynamicParameters
- System.Management.Automation.IDynamicParameters.GetDynamicParameters
- como declarar parâmetros dinâmicos
- gravando um cmdlet do Windows PowerShell