Compartir a través de


Uso de la finalización con tabulación en el shell

PowerShell proporciona finalizaciones en la entrada para proporcionar sugerencias, habilitar la detección y acelerar la entrada. Los nombres de comandos y parámetros, los valores de argumento y las rutas de acceso de archivo se pueden completar al presionar la tecla Tab.

La tecla Tab es el enlace de teclado predeterminado en Windows. PSReadLine también proporciona una función MenuComplete que está enlazada a Ctrl+Espacio. La función MenuComplete muestra una lista de finalizaciones coincidentes debajo de la línea de comandos.

Estos enlaces de teclado se pueden cambiar mediante cmdlets de PSReadLine o la aplicación en la que se hospeda PowerShell. Los enlaces de teclado pueden ser diferentes en plataformas que no son de Windows. Para más información, vea Acerca de las funciones de PSReadLine.

Características integradas de la finalización con tabulación

PowerShell ha habilitado la finalización con tabulación para muchos aspectos de la experiencia de la línea de comandos.

Finalización de nombres

Para rellenar automáticamente un nombre de archivo o una ruta de acceso desde las opciones disponibles, escriba parte del nombre y presione la tecla Tab. PowerShell expandirá automáticamente el nombre a la primera coincidencia que encuentre. Al volver a presionar la tecla Tab, se recorren todas las opciones disponibles con cada pulsación de tecla.

Finalización de nombres de comando y parámetro

La expansión de pestañas de nombres de cmdlet es ligeramente diferente. Para usar la expansión de pestañas en un nombre de cmdlet, escriba la primera parte completa del nombre (verbo) y el guion que aparece detrás. Puede seguir rellenando el nombre para obtener una coincidencia parcial. Por ejemplo, si escribe get-co y, después, presiona la tecla Tab, PowerShell lo expandirá automáticamente al cmdlet Get-Command (tenga en cuenta que también se cambiarán las letras mayúsculas y minúsculas a su formato estándar). Si vuelve a presionar la tecla de tabulación, PowerShell lo reemplazará por el otro único nombre de cmdlet coincidente, Get-Content. La finalización con tabulación también funciona para resolver alias de PowerShell y ejecutables nativos.

En el gráfico siguiente se muestran ejemplos de finalización de pestañas y menús.

Ejemplos de finalización de pestañas y menús

Otras mejoras de la finalización con tabulación

Cada versión nueva de PowerShell incluye mejoras en la finalización con tabulación que corrigen errores y mejoran la facilidad de uso.

PowerShell 7.0

  • La finalización con tabulación resuelve las asignaciones de variables que son enumeraciones o están restringidas por tipos
  • La finalización con tabulación expande cmdlets y funciones abreviados. Por ejemplo, i-psdf<tab> devuelve Import-PowerShellDataFile

PowerShell 7.2

  • Se ha corregido la finalización con tabulación para temas about* no localizados
  • Se ha corregido la plataforma que se trata como parámetro posicional en las finalizaciones
  • Se han agregado finalizaciones para palabras clave de ayuda basadas en comentarios
  • Se ha agregado finalización para las instrucciones #requires
  • Se ha agregado finalización con tabulación para el parámetro View de los cmdlets Format-*
  • Se ha agregado compatibilidad con los completadores de argumentos basados en clases

PowerShell 7.3

  • Se ha corregido la finalización con tabulación dentro del bloque de script especificado para ValidateScriptAttribute
  • Se ha agregado finalización con tabulación para las etiquetas de bucle después de break y continue
  • Se ha mejorado la finalización de la tabla hash en varios escenarios
    • Expansión de parámetros
    • Parámetro Arguments para Invoke-CimMethod
    • Parámetro FilterHashtable para Get-WinEvent
    • Parámetro Property para los cmdlets CIM
    • Quita los duplicados de los escenarios de finalización de miembros.
  • Compatibilidad con las barras diagonales en la finalización del recurso compartido de red (ruta de acceso UNC)
  • Se ha mejorado la finalización automática de miembros
  • Clasificación por orden de prioridad de las finalizaciones ValidateSet en las enumeraciones de los parámetros
  • Se ha agregado compatibilidad con la inferencia de tipos para métodos genéricos con parámetros de tipo
  • Se ha mejorado la inferencia de tipos y finalizaciones
    • Permite que los métodos se muestren en los resultados de finalización de ForEach-Object -MemberName.
    • Impide la finalización en expresiones que devuelven void como ([void](""))
    • Permite que los constructores de clase no predeterminados se muestren cuando la finalización de la clase se basa en AST.

Otras formas de mejorar la finalización con tabulación de los parámetros de comando

La función interna TabExpansion o TabExpansion2 controla la expansión con tabulación integrada. Es posible crear funciones o módulos que reemplacen el comportamiento predeterminado de estas funciones. Para encontrar ejemplos en la Galería de PowerShell, busque la palabra clave TabExpansion.

Uso de los atributos ValidateSet o ArgumentCompletions con parámetros

El atributo ArgumentCompletions permite agregar valores de finalización con tabulación a un parámetro específico. El atributo ArgumentCompletions es similar a ValidateSet. Los dos atributos toman una lista de valores que se presentan cuando el usuario presiona Tab después del nombre del parámetro. Pero a diferencia de ValidateSet, los valores no se validan.

Para más información, consulte:

Uso del atributo ArgumentCompleter o Register-ArgumentCompleter con parámetros

Un completador de argumentos es un bloque de script o una función que proporciona finalización con tabulación dinámica para los valores de parámetro.

El atributo ArgumentCompleter permite registrar una función que proporciona valores de finalización con tabulación para el parámetro. La función de completador de argumento debe estar disponible para la función que contiene el parámetro con el atributo ArgumentCompleter. Normalmente, la función se define en el mismo script o módulo.

Para más información, vea ArgumentCompleter.

El cmdlet Register-ArgumentCompleter registra un bloque de script como una función de completador de argumentos en tiempo de ejecución para cualquier comando que especifique. Esto le permite definir completadores de argumentos fuera del script o módulo, o bien para comandos nativos. Para más información, vea Register-ArgumentCompleter.

IntelliSense predictivo en

En PSReadLine 2.1.0 se ha presentado la característica IntelliSense predictivo. IntelliSense predictivo proporciona sugerencias para comandos completos basados en elementos del historial de PSReadLine.

PSReadLine 2.2.2 amplía la eficacia de IntelliSense predictivo mediante la adición de compatibilidad con módulos de complemento que usan lógica avanzada a fin de proporcionar sugerencias para comandos completos. El módulo Az.Tools.Predictor fue el primer complemento para IntelliSense predictivo. Usa el aprendizaje automático para predecir qué comando de Azure PowerShell se quiere ejecutar y qué parámetros se quieren usar.

Para más información, vea Uso de predictores.