Parâmetros dinâmicos de cmdlet
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 tempo de execução e são chamados de parâmetros dinâmicos porque são adicionados apenas quando necessário. Por exemplo, você pode criar um cmdlet que adiciona vários parâmetros somente quando um parâmetro de opção específico é especificado.
Observação
Provedores e funções do PowerShell também podem definir parâmetros dinâmicos.
Parâmetros dinâmicos nos cmdlets do PowerShell
O PowerShell usa parâmetros dinâmicos em vários dos seus cmdlets de provedor. Por exemplo, os Get-Item
Get-ChildItem
cmdlets e adicionam um parâmetro CodeSigningCert em tempo de execução quando o parâmetro Path especifica o caminho do provedor de certificado . 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 tempo de execução quando Get-Item
é executado.
Neste exemplo, o tempo de execução 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 de sistema de arquivos é 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 elementos a seguir 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 de parâmetro para cada parâmetro e qualquer alias opcional e atributos de validação que são 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 como declarar parâmetros dinâmicos.
Confira também
System. Management. Automation. IDynamicParameters
System. Management. Automation. IDynamicParameters. getdynamicparameters
Como declarar parâmetros dinâmicos
Writing a Windows PowerShell Cmdlet (Escrevendo um Cmdlet do Windows PowerShell)