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.
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>
devuelveImport-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
ycontinue
- 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.
- Permite que los métodos se muestren en los resultados de finalización de
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.