Ejecuta comandos o expresiones en el equipo local.
Sintaxis
Invoke-Expression [-Command] <string> [<CommonParameters>]
Descripción
El cmdlet Invoke-Expression evalúa o ejecuta la cadena especificada como un comando y devuelve los resultados de la expresión o del comando. Sin Invoke-Expression, la cadena enviada a la línea de comandos se devolvería sin cambios.
Parámetros
-Command <string>
Especifica el comando o la expresión que se va a ejecutar. Escriba el comando o la expresión, o bien, una variable que contenga el comando o la expresión. Command es un parámetro obligatorio.
¿Requerido? |
true |
¿Posición? |
1 |
Valor predeterminado |
|
¿Aceptar canalización? |
true (ByValue) |
¿Aceptar caracteres comodín? |
false |
<CommonParameters>
Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.
Entradas y salidas
El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.
Entradas |
System.String o PSObject Puede canalizar a Invoke-Expression un objeto que representa el comando. Utilice la variable automática $input para representar los objetos de entrada en el comando. |
Salidas |
PSObject Devuelve los resultados generados por el comando invocado (el valor del parámetro Command). |
Notas
-- Una expresión es una instrucción que se puede evaluar y que genera un resultado, como un comando de Windows PowerShell.
-- Adopte las precauciones necesarias cuando utilice el cmdlet Invoke-Expression en scripts. Al utilizar Invoke-Expression para ejecutar un comando especificado por el usuario, compruebe si se trata de un comando seguro antes de ejecutarlo. En general, se recomienda diseñar scripts con opciones de entrada predefinidas en lugar de permitir entradas libres.
Ejemplo 1
C:\PS>$command = "Get-Process" C:\PS> $command Get-Process C:\PS> 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 ... Descripción ----------- En este ejemplo se muestra el uso de Invoke-Expression para evaluar una expresión. Sin Invoke-Expression, la expresión se imprime pero no se evalúa. El primer comando asigna el valor "Get-Process" (una cadena) a la variable $command. El segundo comando muestra el efecto de escribir el nombre de variable en la línea de comandos. Windows PowerShell devuelve la cadena. El tercer comando usa Invoke-Expression para evaluar la cadena.
Ejemplo 2
C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1" C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression Descripción ----------- Estos comandos utilizan Invoke-Expression para ejecutar un script, TestScript.ps1, en el equipo local. Los dos comandos son equivalentes. El primero usa el parámetro Command para especificar el comando que se va a ejecutar. El segundo utiliza un operador de canalización (|) para enviar la cadena de comando a Invoke-Expression.
Ejemplo 3
C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}' C:\PS> iex $command Descripción ----------- En este ejemplo se ejecuta una cadena de comando guardada en la variable $cmd. La cadena de comando se encuentra entre comillas simples porque incluye la variable $_, que representa el objeto actual. Si se encontrase entre comillas dobles, la variable $_ se reemplazaría por su valor antes de ser guardada en la cadena $command.
Ejemplo 4
C:\PS>$cmdlet_name = "get-eventlog" C:\PS> $example_number = 1 C:\PS> $example_code = (get-help $cmdlet_name).examples.example[($example_number-1)].code C:\PS> invoke-expression $example_code Descripción ----------- Este comando recupera y ejecuta el primer ejemplo en el tema de Ayuda del cmdlet Get-EventLog. Para ejecutar un ejemplo de otro cmdlet, cambie el valor de la variable $cmdlet_name al nombre del cmdlet. Además, cambie la variable $example_number al número del ejemplo que desee ejecutar. El comando no se ejecutará correctamente si el número de ejemplo no es válido.
Vea también