Compartir a través de


about_Parameter_Binding

Descripción breve

El enlace de parámetros es el proceso que PowerShell usa para determinar qué conjunto de parámetros se usa y para asociar (enlazar) valores a los parámetros de un comando. Estos valores pueden provenir de la línea de comandos y de la canalización.

Descripción larga

El proceso de enlace de parámetros se inicia mediante el enlace de argumentos de línea de comandos.

  1. Enlazar parámetros con nombre

    Busque tokens sin comprimido en la línea de comandos que empiecen por un guión. Si el token termina con dos puntos, se requiere un argumento. Si no hay dos puntos, examine el tipo del parámetro y compruebe si se requiere un argumento. Si se requiere un valor, intente convertir el tipo de argumento al tipo requerido por el parámetro y la conversión se realice correctamente, enlace el parámetro .

  2. Enlazar parámetros posicionales

    Si hay argumentos de línea de comandos sin usar, busque parámetros no enlazados que toman parámetros posicionales e intente enlazarlos.

Después de enlazar argumentos de línea de comandos, PowerShell intenta enlazar cualquier entrada de canalización. Hay dos maneras de enlazar valores desde la canalización. Los parámetros que aceptan la entrada de canalización tienen uno o ambos de los atributos siguientes:

  • ValueFromPipeline: el valor de la canalización está enlazado al parámetro en función de su tipo. El tipo del argumento debe coincidir con el tipo del parámetro.
  • ValueFromPipelineByPropertyName: el valor de la canalización se enlaza al parámetro en función de su nombre. El objeto de la canalización debe tener una propiedad que coincida con el nombre del parámetro o uno de sus alias. El tipo de la propiedad debe coincidir o convertirse en el tipo del parámetro.

PowerShell intenta enlazar la entrada de canalización en el orden siguiente:

  1. Intente enlazar ValueFromPipeline parámetros sin conversión de tipos:

    Enlace desde la canalización por valor con coincidencia exacta de tipo. Si el comando tiene entrada de canalización y todavía hay parámetros sin enlazar, intente enlazar a un parámetro que coincida exactamente con el tipo.

  2. Intente enlazar ValueFromPipelineByPropertyName parámetros sin conversión de tipos:

    Si no se encuentra ninguna coincidencia de valor, enlace desde la canalización por nombre con coincidencia exacta. Busque una propiedad en el objeto de entrada que coincida con el nombre del parámetro o uno de sus alias. Si los tipos coinciden exactamente, enlace el parámetro .

  3. Si no se ha enlazado la entrada de canalización, intente enlazar ValueFromPipeline parámetros con conversión de tipos:

    Intente convertir la entrada de canalización en el tipo necesario. Si se produce un error en la conversión, el parámetro no está enlazado.

  4. Si no se ha enlazado la entrada de canalización, intente enlazar ValueFromPipelineByPropertyName parámetros con conversión de tipos:

    El nombre de la propiedad debe coincidir con el nombre del parámetro o uno de sus alias. Si el tipo de entrada no coincide, intente convertir la entrada en el tipo coincidente. Si se produce un error en la conversión, el parámetro no está enlazado.

Visualización del enlace de parámetros

La solución de problemas de enlace de parámetros puede ser difícil. Puede usar el cmdlet Trace-Command para visualizar el proceso de enlace de parámetros. En el ejemplo siguiente se muestra cómo realizar un seguimiento del enlace de parámetros para una canalización sencilla.

Trace-Command -PSHost -Name ParameterBinding -Expression {
    Get-Item *.txt | Remove-Item
}

La salida muestra todos los pasos del proceso de enlace de parámetros para los comandos de la expresión. La salida puede ser detallada, pero puede ayudarle a comprender por qué un parámetro no está enlazado según lo previsto. Para obtener un ejemplo completo, consulte el artículo Visualización del enlace de parámetros.