about_Parameter_Binding
Breve descrição
A associação de parâmetros é o processo que o PowerShell usa para determinar qual conjunto de parâmetros está sendo usado e para associar (vincular) valores aos parâmetros de um comando. Esses valores podem vir da linha de comando e do pipeline.
Descrição longa
O processo de vinculação de parâmetros começa pela vinculação de argumentos de linha de comando.
Vincular parâmetros nomeados
Encontre tokens não cotados na linha de comando que começam com um traço. Se o token terminar com dois pontos, será necessário um argumento. Se não houver dois pontos, observe o tipo do parâmetro e veja se um argumento é necessário. Se um valor for necessário, tente converter o tipo de argumento para o tipo exigido pelo parâmetro, e a conversão for bem-sucedida, vincule o parâmetro.
Vincular parâmetros posicionais
Se houver argumentos de linha de comando não utilizados, procure parâmetros não acoplados que usam parâmetros posicionais e tente vinculá-los.
Depois de vincular argumentos de linha de comando, o PowerShell tenta vincular qualquer entrada de pipeline. Há duas maneiras pelas quais os valores são vinculados a partir do pipeline. Os parâmetros que aceitam entrada de pipeline têm um ou ambos os seguintes atributos:
- ValueFromPipeline - O valor do pipeline é vinculado ao parâmetro com base em seu tipo. O tipo do argumento deve corresponder ao tipo do parâmetro.
- ValueFromPipelineByPropertyName - O valor do pipeline é vinculado ao parâmetro com base em seu nome. O objeto no pipeline deve ter uma propriedade que corresponda ao nome do parâmetro ou a um de seus aliases. O tipo da propriedade deve corresponder ou ser conversível para o tipo do parâmetro.
O PowerShell tenta vincular a entrada do pipeline na seguinte ordem:
Tente vincular
ValueFromPipeline
parâmetros sem conversão de tipo:Vincular a partir do pipeline por valor com correspondência de tipo exata. Se o comando tiver entrada de pipeline e ainda houver parâmetros não acoplados, tente vincular a um parâmetro que corresponda exatamente ao tipo.
Tente vincular
ValueFromPipelineByPropertyName
parâmetros sem conversão de tipo:Se nenhuma correspondência de valor for encontrada, vincule do pipeline pelo nome com correspondência exata. Procure uma propriedade no objeto de entrada que corresponda ao nome do parâmetro ou a um de seus aliases. Se os tipos corresponderem exatamente, vincule o parâmetro.
Se a entrada do pipeline não tiver sido vinculada, tente vincular
ValueFromPipeline
parâmetros com conversão de tipo:Tente converter a entrada do pipeline para o tipo necessário. Se a conversão falhar, o parâmetro não será vinculado.
Se a entrada do pipeline não tiver sido vinculada, tente vincular
ValueFromPipelineByPropertyName
parâmetros com conversão de tipo:O nome da propriedade deve corresponder ao nome do parâmetro ou a um de seus aliases. Se o tipo de entrada não corresponder, tente convertê-la para o tipo correspondente. Se a conversão falhar, o parâmetro não será vinculado.
Visualize a vinculação de parâmetros
A solução de problemas de vinculação de parâmetros pode ser um desafio. Você pode usar o cmdlet Trace-Command para visualizar o processo de vinculação de parâmetros. O exemplo a seguir mostra como rastrear a associação de parâmetros para um pipeline simples.
Trace-Command -PSHost -Name ParameterBinding -Expression {
Get-Item *.txt | Remove-Item
}
A saída mostra cada etapa do processo de vinculação de parâmetros para os comandos na expressão. A saída pode ser detalhada, mas pode ajudá-lo a entender por que um parâmetro não está sendo vinculado conforme o esperado. Para obter um exemplo completo, consulte o artigo Visualize parameter binding article.