Búsqueda de sitios web

Invoke-Expression (Microsoft.PowerShell.Utility)


Invoke-Expression

Módulo:
Microsoft.PowerShell.Utility

Ejecuta comandos o expresiones en la computadora local.

Sintaxis

Invoke-Expression
      [-Command] <String>
      [<CommonParameters>]

Descripción

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, una cadena enviada en la línea de comando se devuelve (se repite) sin cambios.

Las expresiones se evalúan y ejecutan en el ámbito actual. Para obtener más información, consulte about_Scopes.

Precaución

Tome precauciones razonables al utilizar el cmdlet Invoke-Expression en scripts. Cuando utilice Invoke-Expression para ejecutar un comando que ingresa el usuario, verifique que sea seguro ejecutar el comando antes de ejecutarlo. En general, es mejor diseñar su script con opciones de entrada predefinidas, en lugar de permitir entradas de forma libre.

Ejemplos

Ejemplo 1: evaluar 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
...

Este ejemplo demuestra 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 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 comando. PowerShell hace eco de la cadena.

El tercer comando usa Invoke-Expression para evaluar la cadena.

Ejemplo 2: ejecutar un script en la computadora local

Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression

Estos comandos utilizan Invoke-Expression para ejecutar un script, TestScript.ps1, en la computadora local. Los dos comandos son equivalentes. El primero utiliza el parámetro Command para especificar el comando a ejecutar. El segundo utiliza un operador de canalización (|) para enviar la cadena de comando a Invoke-Expression.

Ejemplo 3: ejecutar un comando en una variable

$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command

Este ejemplo ejecuta una cadena de comando que se guarda en la variable $Command.

La cadena de comando está entre comillas simples porque incluye una variable, $_, que representa el objeto actual. Si estuviera entre comillas dobles, la variable $_ sería reemplazada por su valor antes de guardarse 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 el primer ejemplo del tema de ayuda del cmdlet Get-EventLog.

Para ejecutar un ejemplo de un cmdlet diferente, cambie el valor de la variable $Cmdlet_name por el nombre del cmdlet. Y cambie la variable $Example_number al número de ejemplo que desea ejecutar. El comando falla si el número de ejemplo no es válido.

Nota

Si el código de ejemplo del archivo de ayuda tiene resultados en el ejemplo, PowerShell intenta ejecutar el resultado junto con el código y se generará un error.

Parámetros

-Command

Especifica el comando o expresión que se ejecutará. Escriba el comando o expresión o ingrese una variable que contenga el comando o expresión. El parámetro Comando es obligatorio.

Tipo :

String

Posición:

0

Valor predeterminado:

None

Requerido:

True

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

Entradas

Cadena

Puede canalizar una cadena que represente la expresión que se va a invocar a este cmdlet. Utilice la variable automática $Input para representar los objetos de entrada en el comando.

PSObjeto

Puede canalizar un objeto que represente la expresión que se va a invocar a este cmdlet. Utilice la variable automática $Input para representar los objetos de entrada en el comando.

Salidas

Ninguno

Este cmdlet no devuelve ningún resultado propio, pero el comando invocado puede devolver un resultado.

Notas

PowerShell incluye los siguientes alias para Invoke-Expression:

  • Todas las plataformas:

      iex

En la mayoría de los casos, se invocan expresiones utilizando el operador de llamada de PowerShell y se obtienen los mismos resultados. La llamada al operador es un método más seguro. Para obtener más información, consulte about_Operadores.

Artículos relacionados