Compartir a través de


Uso de la finalización de 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, los nombres de parámetros, los valores de argumento y las rutas de archivos se pueden completar presionando la tecla Tab.

La tecla Tab es la combinación de teclas predeterminada en Windows. PSReadLine también proporciona una MenuComplete función enlazada a Ctrl+Space. La MenuComplete función muestra una lista de finalizaciones coincidentes debajo de la línea de comandos.

Estas asignaciones de teclas se pueden cambiar mediante los cmdlets PSReadLine o la aplicación que hospeda PowerShell. Los enlaces de claves pueden ser diferentes en plataformas que no son de Windows. Para obtener más información, consulte about_PSReadLine_Functions.

Características de finalización de pestañas integradas

PowerShell ha habilitado la finalización de pestañas para muchos aspectos de la experiencia de la línea de comandos.

Finalización del nombre de archivo

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 expande automáticamente el nombre a la primera coincidencia que encuentra. Al presionar la tecla Tab de nuevo, se recorren todas las opciones disponibles con cada pulsación de tecla.

Finalización del nombre del comando y del 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, a continuación, presiona la tecla Tab , PowerShell lo expande automáticamente al Get-Command cmdlet (tenga en cuenta que también cambia el caso de letras a su formulario estándar). Si vuelve a presionar tecla Tab, PowerShell lo reemplaza por el único nombre del cmdlet coincidente, Get-Content. La finalización de 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 finalización de pestañas

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

PowerShell 7.0

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

PowerShell 7.2

  • Corrección de la finalización de pestañas para temas no localizados about*
  • Corregir el uso incorrecto de splatting tratado como parámetro posicional en autocompletado
  • Añadir compleciones para palabras clave de ayuda basada en comentarios
  • Adición de finalización de instrucciones #Requires
  • Agregar finalización de tabulación para parámetro View de Format-* cmdlets
  • Adición de compatibilidad con los completadores de argumentos basados en clases

PowerShell 7.3

  • Corrección de la finalización de tabulación dentro del bloque de script especificado para ValidateScriptAttribute
  • Se ha agregado la finalización de tabulación para las etiquetas de bucle después break y continue
  • Mejora de la finalización de tabla hash en varios escenarios
    • Expansión de parámetros
    • Parámetro arguments para Invoke-CimMethod
    • Parámetro FilterHashtable para Get-WinEvent
    • Parámetro de propiedad para los cmdlets CIM
    • Elimina los duplicados de los escenarios de finalización de miembros.
  • Compatibilidad con la finalización de barras diagonales en el recurso compartido de red (ruta de acceso UNC)
  • Mejora de la finalización automática de miembros
  • Priorizar el uso de completaciones en lugar de enumeraciones para parámetros
  • Adición de compatibilidad con la inferencia de tipos para métodos genéricos con parámetros de tipo
  • Mejora de 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 de 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 el AST.

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

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

Uso de los ValidateSet atributos o ArgumentCompletions con parámetros

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

Para obtener más información, consulte:

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

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

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

Para obtener más información, vea ArgumentCompleter.

El Register-ArgumentCompleter cmdlet 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 para comandos nativos. Para obtener más información, vea Register-ArgumentCompleter.

IntelliSense predictivo en PSReadLine

PSReadLine 2.1.0 introdujo la característica IntelliSense predictiva . IntelliSense predictivo proporciona sugerencias de comandos completos basados en elementos del historial de PSReadLine.

PSReadLine 2.2.2 amplía la potencia de IntelliSense predictivo agregando compatibilidad con módulos de complemento que usan lógica avanzada para proporcionar sugerencias para comandos completos. El módulo Az.Tools.Predictor fue el primer complemento para IntelliSense predictivo. Usa Machine Learning para predecir qué comando de Azure PowerShell desea ejecutar y los parámetros que desea usar.

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