Leer en inglés

Compartir a través de


Invoke-Expression

Ejecuta comandos o expresiones en el equipo local.

Sintaxis

PowerShell
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

PowerShell
$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

PowerShell
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

PowerShell
$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

PowerShell
$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 es requerido.

Tipo:String
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

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.