Invoke-Expression
Ejecuta comandos o expresiones en el equipo local.
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
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 (eco) 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, vea 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.
$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 devuelve la cadena.
El tercer comando usa Invoke-Expression
para evaluar la cadena.
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 usa el parámetro command de 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
.
$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
.
$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 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. 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.
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. Se requiere el parámetro Command.
Tipo: | String |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
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 .
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 .
None
Este cmdlet no devuelve ninguna salida propia, pero el comando invocado puede devolver la salida.
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, vea about_Operators.
Comentarios de PowerShell
PowerShell es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: