0 out of 1 rated this helpful - Rate this topic

Invoke-Expression

Published: February 29, 2012

Updated: August 15, 2012

Applies To: Windows PowerShell 2.0, Windows PowerShell 3.0

Invoke-Expression

Runs commands or expressions on the local computer.

Aliases

The following abbreviations are aliases for this cmdlet:

  • iex

Syntax

Parameter Set: Default
Invoke-Expression [-Command] <String> [ <CommonParameters>]




Detailed Description

The Invoke-Expression cmdlet evaluates or runs a specified string as a command and returns the results of the expression or command. Without Invoke-Expression, a string submitted at the command line would be returned (echoed) unchanged.

Parameters

-Command<String>

Specifies the command or expression to run. Type the command or expression or enter a variable that contains the command or expression. The Command parameter is required.


Aliases

none

Required?

true

Position?

1

Default Value

none

Accept Pipeline Input?

true (ByValue)

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see  about_CommonParameters (http://go.microsoft.com/fwlink/p/?LinkID=113216).

Inputs

The input type is the type of the objects that you can pipe to the cmdlet.

  • System.String or PSObject

    You can pipe an object that represents the command to Invoke-Expression. Use the $input automatic variable to represent the input objects in the command.


Outputs

The output type is the type of the objects that the cmdlet emits.

  • PSObject

    Returns the output that is generated by the invoked command (the value of the Command parameter).


Notes

  • -- An expression is a statement that can be evaluated and produces a result, such as a Windows PowerShell command.

    -- Take reasonable precautions when using the Invoke-Expression cmdlet in scripts. When using Invoke-Expression to run a command that the user enters, verify that the command is safe to run before running it. In general, it is best to design your script with predefined input options, rather than allowing freeform input.

Examples

-------------------------- EXAMPLE 1 --------------------------

This example demonstrates the use of Invoke-Expression to evaluate an expression. Without Invoke-Expression, the expression is printed, but not evaluated.

The first command assigns a value of "Get-Process" (a string) to the $command variable.

The second command shows the effect of typing the variable name at the command line. Windows PowerShell echoes the string.

The third command uses Invoke-Expression to evaluate the string.


PS C:\> $command = "Get-Process"PS C:\>$commandGet-ProcessPS C:\>invoke-expression $commandHandles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName-------  ------    -----      ----- -----   ------     -- -----------296       4     1572       1956    20     0.53   1348 AdtAgent270       6     1328        800    34     0.06   2396 alg67       2      620        484    20     0.22    716 ati2evxx1060      15    12904      11840    74    11.48    892 CcmExec1400      33    25280      37544   223    38.44   2564 communicator...

-------------------------- EXAMPLE 2 --------------------------

These commands use Invoke-Expression to run a script, TestScript.ps1, on the local computer. The two commands are equivalent. The first uses the Command parameter to specify the command to run. The second uses a pipeline operator (|) to send the command string to Invoke-Expression.


PS C:\> invoke-expression -command "C:\ps-test\testscript.ps1"PS C:\>"C:\ps-test\testscript.ps1" | invoke-expression

-------------------------- EXAMPLE 3 --------------------------

This example runs a command string that is saved in the $Command variable.

The command string is enclosed in single quotation marks because it includes a variable, $_, which represents the current object. If it were enclosed in double quotation marks, the $_ variable would be replaced by its value before it was saved in the $Command variable.


PS C:\> $Command = 'Get-Process | where {$_.cpu -gt 1000}'

PS C:\>Invoke-Expression $Command

-------------------------- EXAMPLE 4 --------------------------

This command retrieves and runs the first example in the Get-EventLog cmdlet help topic.

To run an example of a different cmdlet, change the value of the $cmdlet_name variable to the name of the cmdlet. And, change the $example_number variable to the example number you want to run. The command will fail if the example number is not valid.


PS C:\> $cmdlet_name = "get-eventlog"PS C:\>$example_number = 1PS C:\>$example_code = (get-help $cmdlet_name).examples.example[($example_number-1)].codePS C:\>invoke-expression $example_code

Related topics


Invoke-Command



Did you find this helpful?
(1500 characters remaining)
© 2013 Microsoft. All rights reserved.