Register-ArgumentCompleter
Registra um concluídor de argumento personalizado.
Sintaxe
NativeSet
Register-ArgumentCompleter
-CommandName <String[]>
-ScriptBlock <ScriptBlock>
[-Native]
[<CommonParameters>]
PowerShellSet
Register-ArgumentCompleter
-ParameterName <String>
-ScriptBlock <ScriptBlock>
[-CommandName <String[]>]
[<CommonParameters>]
Description
O cmdlet Register-ArgumentCompleter registra um concluídor de argumento personalizado. Um concluídor de argumento permite que você forneça a conclusão da guia dinâmica em tempo de execução para qualquer comando especificado.
Exemplos
Exemplo 1: registrar um concluídor de argumento personalizado
O exemplo a seguir registra um concluídor de argumento para o parâmetro de ID
$scriptBlock = {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
(Get-TimeZone -ListAvailable).Id | Where-Object {
$_ -like "$wordToComplete*"
} | ForEach-Object {
"'$_'"
}
}
Register-ArgumentCompleter -CommandName Set-TimeZone -ParameterName Id -ScriptBlock $scriptBlock
O primeiro comando cria um bloco de script que recebe os parâmetros necessários que são passados quando o usuário pressiona Tab. Para obter mais informações, consulte a descrição do parâmetro ScriptBlock .
No bloco de script, os valores disponíveis para Id são recuperados usando o cmdlet Get-TimeZone. A propriedade ID para cada Fuso Horário é canalizada para o cmdlet Where-Object. O Where-Object cmdlet filtra todas as IDs que não começam com o valor fornecido por $wordToComplete, que representa o texto que o usuário digitou antes de pressionar Tab. As IDs filtradas são canalizadas para o ForEach-Object cmdlet que inclui cada valor entre aspas, caso o valor contenha espaços.
O segundo comando registra o concluídor de argumentos passando o scriptblock, o ParameterNameId e o .
Exemplo 2: adicionar detalhes aos valores de conclusão da guia
O exemplo a seguir substitui a conclusão da guia para o parâmetro Name do cmdlet Stop-Service e retorna apenas serviços em execução.
$s = {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
$services = Get-Service | Where-Object {$_.Status -eq "Running" -and $_.Name -like "$wordToComplete*"}
$services | ForEach-Object {
New-Object -Type System.Management.Automation.CompletionResult -ArgumentList $_.Name,
$_.Name,
"ParameterValue",
$_.Name
}
}
Register-ArgumentCompleter -CommandName Stop-Service -ParameterName Name -ScriptBlock $s
O primeiro comando cria um bloco de script que recebe os parâmetros necessários que são passados quando o usuário pressiona Tab. Para obter mais informações, consulte a descrição do parâmetro ScriptBlock .
Dentro do bloco de script, o primeiro comando recupera todos os serviços em execução usando o cmdlet Where-Object. Os serviços são canalizados para o cmdlet ForEach-Object. O cmdlet ForEach-Object cria um novo objeto System.Management.Automation.CompletionResult e o popula com o nome do serviço atual (representado pela variável de pipeline $_.Name).
O objeto CompletionResult permite que você forneça detalhes adicionais para cada valor retornado:
- completionText (String) – O texto a ser usado como o resultado de conclusão automática. Esse é o valor enviado para o comando.
- listItemText (String) – O texto a ser exibido em uma lista, como quando o usuário pressiona Ctrl+Space. Isso é usado somente para exibição e não é passado para o comando quando selecionado.
- resultType (CompletionResultType) – O tipo de resultado de conclusão.
- toolTip (String) – O texto da dica de ferramenta com detalhes a serem exibidos sobre o objeto. Isso fica visível quando o usuário seleciona um item depois de pressionar Ctrl+Space.
O último comando demonstra que os serviços interrompidos ainda podem ser passados manualmente para o cmdlet Stop-Service. A conclusão da guia é o único aspecto afetado.
Exemplo 3: Registrar um concluídor de argumento nativo personalizado
Você pode usar o parâmetro Native para fornecer a conclusão da guia para um comando nativo. O exemplo a seguir adiciona a conclusão da guia para a CLI (Interface de Linha de Comando) do dotnet.
Observação
O comando dotnet complete só está disponível na versão 2.0 e superior da cli dotnet.
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition $commandAst.ToString() | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
O primeiro comando cria um bloco de script que recebe os parâmetros necessários que são passados quando o usuário pressiona Tab. Para obter mais informações, consulte a descrição do parâmetro ScriptBlock .
Dentro do bloco de script, o comando dotnet complete é usado para executar a conclusão da guia.
Os resultados são canalizados para o ForEach-Object cmdlet que usa o novo método estático da classe System.Management.Automation.CompletionResult para criar um novo objeto CompletionResult para cada valor.
Parâmetros
-CommandName
Especifica o nome dos comandos como uma matriz.
Propriedades do parâmetro
| Tipo: | String[] |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
NativeSet
| Cargo: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
PowerShellSet
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Native
Indica que o concluídor de argumento é para um comando nativo em que o PowerShell não pode concluir nomes de parâmetro.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
NativeSet
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-ParameterName
Especifica o nome do parâmetro cujo argumento está sendo concluído. O nome do parâmetro especificado não pode ser um valor enumerado, como o parâmetro ForegroundColor do cmdlet Write-Host.
Para obter mais informações sobre enumerações, consulte about_Enum.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
PowerShellSet
| Cargo: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-ScriptBlock
Especifica os comandos a serem executados para executar a conclusão da guia. O bloco de script fornecido deve retornar os valores que completam a entrada. O bloco de script deve cancelar o registro dos valores usando o pipeline (ForEach-Object, Where-Object, etc.) ou outro método adequado. Retornar uma matriz de valores faz com que o PowerShell trate toda a matriz como um valor de conclusão da guia.
O bloco de script deve aceitar os seguintes parâmetros na ordem especificada abaixo. Os nomes dos parâmetros não são importantes porque o PowerShell passa os valores por posição.
-
$commandName(Posição 0) – esse parâmetro é definido como o nome do comando para o qual o bloco de script está fornecendo a conclusão da guia. -
$parameterName(Posição 1) – esse parâmetro é definido como o parâmetro cujo valor requer a conclusão da guia. -
$wordToComplete(Posição 2) – esse parâmetro é definido como valor que o usuário forneceu antes de pressionar Tab. O bloco de script deve usar esse valor para determinar os valores de conclusão da guia. -
$commandAst(Posição 3) – esse parâmetro é definido como AST (Árvore de Sintaxe Abstrata) para a linha de entrada atual. Para obter mais informações, consulte Ast Class. -
$fakeBoundParameters(Posição 4) – esse parâmetro é definido como um hash que contém o$PSBoundParametersdo cmdlet, antes que o usuário pressione Tab. Para obter mais informações, consulte about_Automatic_Variables.
Quando você especifica o parâmetro Native, o bloco de script deve usar os seguintes parâmetros na ordem especificada. Os nomes dos parâmetros não são importantes porque o PowerShell passa os valores por posição.
-
$wordToComplete(Posição 0) - Este parâmetro é definido como o valor que o usuário forneceu antes de pressionar Tab. Seu bloco de script deve usar esse valor para determinar os valores de preenchimento de tabulação. -
$commandAst(Posição 1) - Este parâmetro é definido como a Árvore de Sintaxe Abstrata (AST) para a linha de entrada atual. Para obter mais informações, consulte Ast Class. -
$cursorPosition(Posição 2) - Este parâmetro é definido para a posição do cursor quando o usuário pressiona Tab.
Você também pode fornecer um ArgumentCompleter como um atributo de parâmetro. Para obter mais informações, consulte about_Functions_Advanced_Parameters.
Propriedades do parâmetro
| Tipo: | ScriptBlock |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
None
Não é possível transferir objetos para esse cmdlet.
Saídas
None
Esse cmdlet não retorna nenhuma saída.