Partilhar via


Sobre a análise

BREVE DESCRIÇÃO

Descreve como o PowerShell analisa comandos.

DESCRIÇÃO LONGA

Quando você insere um comando no prompt de comando, o PowerShell divide o texto do comando em uma série de segmentos chamados "tokens" e, em seguida, determina como interpretar cada "token".

Por exemplo, se você digitar:

Write-Host livro

O PowerShell divide o comando a seguir em dois tokens, "Write-Host" e "book", e interpreta cada token independentemente.

Ao processar um comando, o analisador do PowerShell opera no modo de expressão ou no modo de argumento:

  • No modo de expressão, os valores da cadeia de caracteres devem estar contidos entre aspas. Os números entre aspas são tratados como valores numéricos (e não como uma série de caracteres).

  • No modo de argumento, cada valor é tratado como uma cadeia de caracteres expansível, a menos que comece com um dos seguintes caracteres especiais: cifrão ($), no sinal (@), aspas simples ('), aspas duplas ("), ou um parêntese de abertura (().

Se precedido por um desses caracteres, o valor é tratado como uma expressão de valor.

A tabela a seguir fornece vários exemplos de comandos processados no modo de expressão e no modo de argumento e os resultados produzidos por esses comandos.

Exemplo Modo Resultado
2+2 Expressão 4 (inteiro)
Write-Output 2+2 Argumento "2+2" (string)
Write-Output (2+2) Expressão 4 (inteiro)
$a = 2+2 Expressão $a = 4 (inteiro)
Write-Output $a Expressão 4 (inteiro)
Write-Output $a/H Argumento "4/H" (corda)

Cada token pode ser interpretado como algum tipo de objeto, como booleano ou string. O PowerShell tenta determinar o tipo de objeto a partir da expressão. O tipo de objeto depende do tipo de parâmetro esperado por um comando e se o PowerShell sabe como converter o argumento para o tipo correto. A tabela a seguir mostra vários exemplos dos tipos atribuídos aos valores retornados pelas expressões.

Exemplo Modo Resultado
Write-Output !1 argumento "!1" (string)
Write-Output (!1) expressão Falso (Booleano)
Write-Output (2) expressão 2 (inteiro)

O símbolo de parada de análise (--%), introduzido no PowerShell 3.0, orienta o PowerShell a abster-se de interpretar a entrada como comandos ou expressões do PowerShell.

Ao chamar um programa executável no PowerShell, coloque o símbolo de parada de análise antes dos argumentos do programa. Esta técnica é muito mais fácil do que usar caracteres de fuga para evitar interpretações erradas.

Quando encontra um símbolo de interrupção de análise, o PowerShell trata os caracteres restantes na linha literalmente. A única interpretação que ele executa é substituir valores por variáveis de ambiente que usam notação padrão do Windows, como %USERPROFILE%.

O símbolo de parada de análise é efetivo somente até o próximo caractere de nova linha ou pipeline. Não é possível usar um caractere de continuação (') para estender seu efeito ou usar um delimitador de comando (;) para encerrar seu efeito.

Por exemplo, o comando a seguir chama o programa Icacls.

icacls X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

Para executar esse comando no PowerShell 2.0, você deve usar caracteres de escape para evitar que o PowerShell interprete incorretamente os parênteses.

icacls X:\VMS /grant Dom\HVAdmin:`(CI`)`(OI`)F

A partir do PowerShell 3.0, você pode usar o símbolo de parada de análise.

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

O PowerShell envia a seguinte cadeia de caracteres de comando para o programa Icacls:

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

VER TAMBÉM

sobre_Syntax_do_Comando