Usando o preenchimento com tabulação no shell

O PowerShell fornece preenchimentos de entrada para fornecer dicas, habilitar a descoberta e acelerar a entrada de informações. Nomes de comando, nomes de parâmetros, valores de argumento e caminhos de arquivo podem ser preenchidos pressionando a tecla Tab.

A tecla Tab é a associação de teclas padrão no Windows. PSReadLine também fornece uma função MenuComplete associada aa Ctrl+Espaço. A função MenuComplete exibe uma lista de preenchimentos correspondentes abaixo da linha de comando.

Essas associações de teclas podem ser alteradas usando cmdlets PSReadLine ou o aplicativo que está hospedando o PowerShell. As associações de teclas podem ser diferentes em plataformas que não são do Windows. Para obter mais informações, consulte about_PSReadLine_Functions.

Recursos internos de preenchimento com tabulação

O PowerShell habilitou o preenchimento com tabulação para muitos aspectos da experiência da linha de comando.

Preenchimento de nome de arquivo

Para preencher automaticamente um nome de arquivo ou um caminho com as opções disponíveis automaticamente, digite parte do nome e pressione a tecla Tab. O PowerShell expande automaticamente o nome para a primeira correspondência que encontra. Pressionar a tecla Tab novamente percorre todas as opções disponíveis com cada pressionamento da tecla.

Preenchimento de nome de parâmetro e comando

A expansão com Tab de nomes de cmdlet é ligeiramente diferente. Para usar a expansão com Tab em um nome de cmdlet, digite a primeira parte inteira do nome (o verbo) e o hífen que o segue. Você pode preencher mais do mesmo nome de uma correspondência parcial. Por exemplo, se você digitar get-co e pressionar a tecla Tab, o PowerShell o expandirá automaticamente para o cmdlet Get-Command (observe que ele também altera as letras maiúsculas e minúsculas para sua forma padrão). Se você pressionar a tecla Tab novamente, o PowerShell substitui isso pelo outro único nome de cmdlet correspondente, Get-Content. O preenchimento com tabulação também funciona para resolver aliases e executáveis nativos do PowerShell.

O gráfico a seguir mostra exemplos de preenchimento de menu e guia.

Exemplos de preenchimento de guia e menu

Outros aprimoramentos de preenchimento com tabulação

Cada nova versão do PowerShell inclui aprimoramentos no preenchimento com tabulação que corrigem bugs e aprimoram a usabilidade.

PowerShell 7.0

  • O preenchimento com tabulação resolve atribuições de variáveis que são enumerações ou são restritas por tipo
  • O preenchimento com tabulação expande cmdlets e funções abreviadas. Por exemplo, i-psdf<tab> retorna Import-PowerShellDataFile

PowerShell 7.2

  • Corrigir o preenchimento com tabulação para tópicos não localizados sobreabout*
  • Corrigir o posicionamento que está sendo tratado como parâmetro posicional nos preenchimentos
  • Adicionar preenchimentos para palavras-chave de ajuda baseadas em comentário
  • Adicionar preenchimento para instruções #requires
  • Adicionar o preenchimento com tabulação para o parâmetro View dos cmdlets Format-*
  • Adicionar suporte para concluidores de argumentos baseados em classe

PowerShell 7.3

  • Corrigir o preenchimento com tabulação dentro do bloco de script especificado para o ValidateScriptAttribute
  • Adicionado o preenchimento com tabulação para rótulos após break e continue
  • Aprimorar o preenchimento da Tabela de Hash em vários cenários
    • Nivelamento de parâmetro
    • Parâmetro Arguments paraInvoke-CimMethod
    • Parâmetro FilterHashtable paraGet-WinEvent
    • Parâmetro Property para os cmdlets CIM
    • Remove duplicatas de cenários de conclusão de membro
  • Dar suporte a barras no preenchimento do compartilhamento de rede (caminho UNC)
  • Aprimorar o preenchimento automático do membro
  • Priorizar preenchimentos de ValidateSet em enumerações para parâmetros
  • Adicionar suporte à inferência de tipos para métodos genéricos com parâmetros de tipo
  • Aprimorar a inferência e os preenchimentos de tipos
    • Permite que os métodos sejam mostrados nos resultados de conclusão para ForEach-Object -MemberName
    • Impede o preenchimento em expressões que retornam void, como ([void](""))
    • Permite que construtores de classe não padrão apareçam quando a conclusão da classe é baseada no AST

Outras maneiras de aprimorar o preenchimento com tabulação de parâmetros de comando

A expansão da guia embutida é controlada pela função interna TabExpansion ou TabExpansion2. É possível criar funções ou módulos que substituem o comportamento padrão dessas funções. Você pode encontrar exemplos na Galeria do PowerShell pesquisando a palavra-chave TabExpansion.

Usando os atributos ValidateSet ou ArgumentCompletions com parâmetros

O atributo ArgumentCompletions permite adicionar valores de preenchimento com tabulação a um parâmetro específico. O atributo ArgumentCompletions é semelhante a ValidateSet. Ambos os atributos utilizam uma lista de valores a serem apresentados quando o usuário pressiona Tab após o nome do parâmetro. No entanto, diferente de ValidateSet, os valores não são validados.

Para obter mais informações, veja:

Usando o atributo ArgumentCompleter ou Register-ArgumentCompleter com parâmetros

Um preenchedor de argumentos é um bloco de script ou uma função que fornece preenchimento com tabulação dinâmico para valores de parâmetro.

O atributo ArgumentCompleter permite que você registre uma função que fornece valores de preenchimento com tabulação para o parâmetro. A função de preenchimento de argumento precisa estar disponível para a função que contém o parâmetro com o atributo ArgumentCompleter. Normalmente, a função é definida no mesmo script ou módulo.

Para obter mais informações, consulte ArgumentCompleter.

O cmdlet Register-ArgumentCompleter registra um bloco de script como uma função de preenchimento de argumento em tempo de execução para qualquer comando especificado. Isso permite que você defina preenchedores de argumento fora do script ou do módulo ou para comandos nativos. Para obter mais informações, consulte Register-ArgumentCompleter.

IntelliSense Preditivo em PSReadLine

O PSReadLine 2.1.0 apresentou o recurso de IntelliSense Preditivo. O IntelliSense Preditivo fornece sugestões para comandos completos com base em itens do histórico do PSReadLine.

O PSReadLine 2.2.2 estende a potência do IntelliSense Preditivo adicionando suporte para módulos de plug-in que usam lógica avançada para fornecer sugestões para comandos completos. O módulo Az.Tools.Predictor foi o primeiro plug-in do IntelliSense Preditivo. Ele usa o Machine Learning para prever qual comando do Azure PowerShell você deseja executar e os parâmetros que deseja usar.

Para mais informações, consulte Usando preditores.