Invoke-Expression
Ejecuta comandos o expresiones en el equipo local.
Sintaxis
Default (Es el valor predeterminado).
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Description
El cmdlet Invoke-Expression evalúa o ejecuta una cadena especificada como un comando y devuelve los resultados de la expresión o comando. Sin Invoke-Expression, se devuelve una cadena enviada en la línea de comandos sin cambios.
Las expresiones se evalúan y se ejecutan en el ámbito actual. Para obtener más información, consulte about_Scopes.
Precaución
Tome precauciones razonables al usar el cmdlet Invoke-Expression en scripts. Al usar Invoke-Expression para ejecutar un comando que el usuario escribe, compruebe que el comando es seguro ejecutarlo antes de ejecutarlo. En general, es mejor diseñar el script con opciones de entrada predefinidas, en lugar de permitir la entrada de forma libre.
Ejemplos
Ejemplo 1: Evaluación de una expresión
$Command = "Get-Process"
$Command
Get-Process
Invoke-Expression $Command
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
296 4 1572 1956 20 0.53 1348 AdtAgent
270 6 1328 800 34 0.06 2396 alg
67 2 620 484 20 0.22 716 ati2evxx
1060 15 12904 11840 74 11.48 892 CcmExec
1400 33 25280 37544 223 38.44 2564 communicator
...
En este ejemplo se muestra el uso de Invoke-Expression para evaluar una expresión. Sin Invoke-Expression, se imprime la expresión, pero no se evalúa.
El primer comando asigna un valor de Get-Process (una cadena) a la variable $Command.
El segundo comando muestra el efecto de escribir el nombre de la variable en la línea de comandos. PowerShell reproduce la cadena.
El tercer comando usa Invoke-Expression para evaluar la cadena.
Ejemplo 2: Ejecución de un script en el equipo local
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
Estos comandos usan Invoke-Expression para ejecutar un script, TestScript.ps1, en el equipo local. Los dos comandos son equivalentes. La primera utiliza el parámetro Command para especificar el comando que se va a ejecutar.
El segundo usa un operador de canalización (|) para enviar la cadena de comandos a Invoke-Expression.
Ejemplo 3: Ejecutar un comando en una variable
$Command = 'Get-Process | where {$_.CPU -gt 1000}'
Invoke-Expression $Command
En este ejemplo se ejecuta una cadena de comandos que se guarda en la variable $Command.
La cadena de comando se incluye entre comillas simples porque incluye una variable, $_, que representa el objeto actual. Si estuviera entre comillas dobles, la variable $_ se reemplazaría por su valor antes de que se guardara en la variable $Command.
Ejemplo 4: Obtener y ejecutar un ejemplo de ayuda de cmdlet
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
Este comando recupera y ejecuta en el primer ejemplo en el tema de Ayuda del Get-EventLog.
Para ejecutar un ejemplo de un cmdlet diferente, cambie el valor de la variable $Cmdlet_name por el nombre del cmdlet. Además, cambie la variable $Example_number al número de ejemplo que desea ejecutar. Se produce un error en el comando si el número de ejemplo no es válido.
Nota:
Si el código de ejemplo del archivo de ayuda tiene salida en el ejemplo, PowerShell intenta ejecutar la salida junto con el código y se producirá un error.
Parámetros
-Command
Especifica el comando o expresión que se va a ejecutar. Escriba el comando o expresión o escriba una variable que contenga el comando o la expresión. El parámetro del comando
Propiedades del parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | 0 |
| Mandatory: | True |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
String
Puede canalizar una cadena que representa la expresión que se va a invocar a este cmdlet. Use el $input variable automática para representar los objetos de entrada en el comando .
PSObject
Puede canalizar un objeto que representa la expresión que se va a invocar a este cmdlet. Use el $input variable automática para representar los objetos de entrada en el comando .
Salidas
None
Este cmdlet no devuelve ninguna salida propia, pero el comando invocado puede devolver la salida.
Notas
PowerShell incluye los siguientes alias para Invoke-Expression:
- Todas las plataformas:
iex
En la mayoría de los casos, se invocan expresiones mediante el operador de llamada de PowerShell y se obtienen los mismos resultados. El operador de llamada es un método más seguro. Para obtener más información, consulte about_Operators.