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




Tabla de contenido