about_Parsing

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

TÓPICO

about_Parsing

DESCRIÇÃO BREVE

Descreve como Windows PowerShell analisa os comandos.

DESCRIÇÃO LONGA

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

Por exemplo, se você digitar:

         Write-Host book

Windows PowerShell divide o seguinte comando em dois tokens "Write-Host" e "book" e interpreta cada token de forma independente.

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

- No modo de expressão, os valores de cadeia de caracteres devem estar contidos entre aspas. Os números não incluídos entre aspas são tratados como valores numéricos (em vez de uma série de caracteres).

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

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 em modo de expressão e modo de argumento e os resultados produzidos por esses comandos.

    Example            Mode         Result
    ------------------ ----------   ----------------
    2+2                Expression   4 (integer)
    Write-Output 2+2   Argument     "2+2" (string)
    Write-Output (2+2) Expression   4 (integer)
    $a = 2+2           Expression   $a = 4 (integer)
    Write-Output $a    Expression   4 (integer)
    Write-Output $a/H  Argument     "4/H" (string)

Cada token pode ser interpretado como algum tipo de objeto, como cadeia de caracteres ou booliano. O Windows PowerShell tenta determinar o tipo de objeto da expressão. O tipo de objeto depende do tipo de parâmetro que um comando espera e se Windows PowerShell sabe como converter o argumento no tipo correto. A tabela a seguir mostra vários exemplos dos tipos atribuídos a valores retornados por expressões.

    Example            Mode         Result
    ------------------ ----------   ---------------
    Write-Output !1    argument     "!1" (string)
    Write-Output (!1)  expression   False (Boolean)
    Write-Output (2)   expression   2 (integer)

PARAR ANÁLISE: --%

O símbolo "parar análise" (-%), apresentado no Windows PowerShell 3.0, direciona Windows PowerShell para impedir a interpretação da entrada como comandos ou expressões do Windows PowerShell.

Ao chamar um programa executável no Windows PowerShell, coloque o símbolo "parar análise" antes dos argumentos do programa. Essa técnica é muito mais fácil do que usar caracteres de escape para evitar má interpretação.

Quando ela encontra um símbolo "parar análise", o Windows PowerShell trata os caracteres restantes na linha como um literal. A única interpretação executada é a substituição de valores de variáveis de ambiente que usam a notação padrão do Windows, como %USERPROFILE%.

O símbolo "parar análise" é eficiente apenas até o próximo caractere de nova linha ou pipeline. Você não pode usar um caractere de continuação (`) para estender seu efeito ou usar um delimitador de comando (;) para finalizar seu efeito.

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

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

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

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

A partir do Windows PowerShell 3.0, você pode usar o símbolo "parar análise".

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

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

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

CONSULTE TAMBÉM

about_Command_Syntax