Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
BREVE DESCRIÇÃO
Descreve como o PowerShell analisa comandos.
LONGA DESCRIÇÃO
Quando introduz um comando no pedido de comando, o PowerShell divide o texto de comando numa série de segmentos chamados "tokens" e, em seguida, determina como interpretar cada "token".
Por exemplo, se escrever:
Livro de write-Host
PowerShell quebra o seguinte comando em dois tokens, "Write-Host" e "book", e interpreta cada símbolo de forma independente.
Ao processar um comando, o parser PowerShell funciona no modo de expressão ou no modo de argumento:
No modo de expressão, os valores das cordas do carácter devem ser contidos em aspas. Os números não incluídos nas 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 corda expansível a menos que comece com um dos seguintes caracteres especiais: sinal de dólar ( $ ), no signo (@), marca de cotação única ( ' ), marca de cotação dupla ( ), ou um " parêntese de abertura ( ( ).
Se precedido por um destes caracteres, o valor é tratado como uma expressão de valor.
A tabela seguinte fornece vários exemplos de comandos processados em modo de expressão e modo de argumento e os resultados produzidos por esses comandos.
| Exemplo | Modo | Resultado |
|---|---|---|
| 2+2 | Expressão | 4 (inteiro) |
| Saída de escrita 2+2 | Argumento | "2+2" (corda) |
| Write-Output (2+2) | Expressão | 4 (inteiro) |
| $a = 2+2 | Expressão | $a = 4 (inteiro) |
| $a de saída de escrita | Expressão | 4 (inteiro) |
| $a/H de saída de escrita | Argumento | "4/H" (corda) |
Cada símbolo pode ser interpretado como algum tipo de objeto, como Boolean ou string. PowerShell tenta determinar o tipo de objeto a partir da expressão. O tipo de objeto depende do tipo de parâmetro que um comando espera e se o PowerShell sabe converter o argumento para o tipo correto. A tabela a seguir mostra vários exemplos dos tipos atribuídos aos valores devolvidos pelas expressões.
| Exemplo | Modo | Resultado |
|---|---|---|
| Write-Output !1 | Argumento | "!1" (corda) |
| Write-Output (!1) | expression | Falso (Booleano) |
| Saída de escrita (2) | expression | 2 (inteiro) |
O símbolo de stop-parsing (---%), introduzido no PowerShell 3.0, direciona a PowerShell para se abster de interpretar a entrada como comandos ou expressões powerShell.
Ao chamar um programa executável em PowerShell, coloque o símbolo de stop-parsing 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 stop-parsing, o PowerShell trata os restantes caracteres da linha como um literal. A única interpretação que executa é substituir valores por variáveis ambientais que utilizam a notação padrão do Windows, como %USERPROFILE%.
O símbolo de stop-parsing só é eficaz até à próxima linha nova ou ao caractere do gasoduto. Não é possível utilizar um carácter de continuação (') para estender o seu efeito ou utilizar um delimiter de comando (;) para terminar o seu efeito.
Por exemplo, o seguinte comando chama o programa Icacls.
icacls X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
Para executar este comando em PowerShell 2.0, deve utilizar caracteres de fuga para evitar que o PowerShell interprete mal os parênteses.
icacls X:\VMS /grant Dom\HVAdmin:`(CI`)`(OI`)F
A partir de PowerShell 3.0, pode utilizar o símbolo de stop-parsing.
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
PowerShell envia a seguinte cadeia de comando para o programa Icacls:
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F