Tutorials  PowerShell Cmdlet Help for Invoke-Expression


Runs commands or expressions on the local computer.

Invoke-Expression [-Command] []

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

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

Required? true
Position? 1
Default value
Accept pipeline input? true (ByValue)
Accept wildcard characters? false

This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer and OutVariable. For more information, type,
"get-help about_commonparameters".

System.String or PSObject
You can pipe an object that represents the command to Invoke-Expression. Use the $input automatic variable to r
epresent the input objects in the command.

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


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

-- 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, i
t is best to design your script with predefined input options, rather than allowing freeform input.

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

C:\PS>$command = "Get-Process"

C:\PS> $command

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

This example demonstrates the use of Invoke-Expression to evaluate an expression. Without Invoke-Expression, the ex
pression 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

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

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

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

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

These commands use Invoke-Expression to run a script, TestScript.ps1, on the local computer. The two commands are e
quivalent. 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.

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

C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}'

C:\PS> iex $command

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

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

-------------------------- EXAMPLE 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

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. A
nd, change the $example_number variable to the example number you want to run. The command will fail if the example
number is not valid.

Online version: http://go.microsoft.com/fwlink/?LinkID=113343