Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
DESCRIPCIÓN BREVE
Describe cómo PowerShell analiza los comandos.
DESCRIPCIÓN LARGA
Al escribir un comando en el símbolo del sistema, PowerShell divide el texto del comando en una serie de segmentos denominados "tokens" y, a continuación, determina cómo interpretar cada "token".
Por ejemplo, si escribe:
Write-Host libro
PowerShell divide el siguiente comando en dos tokens, "Write-Host" y "book", e interpreta cada token de forma independiente.
Al procesar un comando, el analizador de PowerShell funciona en modo de expresión o en modo de argumento:
En el modo de expresión, los valores de cadena de caracteres deben estar entre comillas. Los números que no están entre comillas se tratan como valores numéricos (en lugar de como una serie de caracteres).
En el modo de argumento, cada valor se trata como una cadena expandible a menos que comience con uno de los siguientes caracteres especiales: signo de dólar ($), signo de arroba (@), comilla simple ('), comilla doble (") o un paréntesis de apertura (().
Si va precedido de uno de estos caracteres, el valor se trata como una expresión de valor.
En la tabla siguiente se proporcionan varios ejemplos de comandos procesados en modo de expresión y modo de argumento, así como los resultados generados por esos comandos.
| Ejemplo | Modo | Resultado |
|---|---|---|
| 2+2 | Expresión | 4 (entero) |
| Write-Output 2+2 | Argumento | "2+2" (cadena) |
| Write-Output (2+2) | Expresión | 4 (entero) |
| $a = 2+2 | Expresión | $a = 4 (entero) |
| Write-Output $a | Expresión | 4 (entero) |
| Write-Output $a/H | Argumento | "4/H" (cuerda) |
Cada token se puede interpretar como algún tipo de tipo de objeto, como booleano o cadena. PowerShell intenta determinar el tipo de objeto de la expresión. El tipo de objeto depende del tipo de parámetro que espera un comando y de si PowerShell sabe cómo convertir el argumento al tipo correcto. En la tabla siguiente se muestran varios ejemplos de los tipos asignados a los valores devueltos por las expresiones.
| Ejemplo | Modo | Resultado |
|---|---|---|
| Write-Output !1 | argumento | "!1" (cadena) |
| Write-Output (!1) | expresión | False (booleano) |
| Write-Output (2) | expresión | 2 (entero) |
El símbolo de detención del análisis (--%), introducido en PowerShell 3.0, indica a PowerShell que se abstenga de interpretar la entrada como comandos o expresiones de PowerShell.
Al llamar a un programa ejecutable en PowerShell, coloque el símbolo de detención del análisis antes de los argumentos del programa. Esta técnica es mucho más fácil que usar caracteres de escape para evitar errores de interpretación.
Cuando encuentra un símbolo que detiene el procesamiento, PowerShell trata los caracteres restantes de la línea como un literal. La única interpretación que realiza es sustituir valores por variables de entorno que usan la notación estándar de Windows, como %USERPROFILE%.
El símbolo de detención del análisis solo es efectivo hasta el siguiente carácter de nueva línea o canalización. No se puede utilizar un carácter de continuación (') para ampliar su efecto ni utilizar un delimitador de comando (;) para finalizar su efecto.
Por ejemplo, el siguiente comando llama al programa Icacls.
icacls X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
Para ejecutar este comando en PowerShell 2.0, debe usar caracteres de escape para evitar que PowerShell malinterprete los paréntesis.
icacls X:\VMS /grant Dom\HVAdmin:`(CI`)`(OI`)F
A partir de PowerShell 3.0, puede usar el símbolo de detención del análisis.
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
PowerShell envía la siguiente cadena de comandos al programa Icacls:
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F