Invoke-Expression

在本地计算机上运行命令或表达式。

语法

Default (默认值)

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

说明

该 cmdlet 以 Invoke-Expression 命令的形式计算或运行指定的字符串,并返回表达式或命令的结果。 如果没有 Invoke-Expression,在命令行上提交的字符串将返回(回显)不变。

表达式在当前范围内计算并运行。 有关详细信息,请参阅 about_Scopes。

注意

在脚本中使用 Invoke-Expression cmdlet 时采取合理的预防措施。 用于 Invoke-Expression 运行用户输入的命令时,请在运行该命令之前验证该命令是否安全运行。 通常,最好使用预定义的输入选项设计脚本,而不是允许任意多边形输入。

示例

示例 1:计算表达式

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

此示例演示如何使用 Invoke-Expression 计算表达式。 如果没有 Invoke-Expression,则打印表达式,但不计算表达式。

第一个命令将值 Get-Process (字符串)分配给 $Command 变量。

第二个命令显示在命令行中键入变量名称的效果。 PowerShell 回显字符串。

第三个命令用于 Invoke-Expression 评估字符串。

示例 2:在本地计算机上运行脚本

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

这些命令用于 Invoke-Expression 在本地计算机上运行脚本 TestScript.ps1。 这两个命令是等效的。 第一个使用 Command 参数指定要运行的命令。 第二个使用管道运算符 (|) 将命令字符串 Invoke-Expression发送到 。

示例 3:在变量中运行命令

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

此示例运行保存在变量中的 $Command 命令字符串。

命令字符串用单引号括起来, $_因为它包含一个代表当前对象的变量。 如果变量括在双引号中,则 $_ 变量将在变量中 $Command 保存之前用其值替换。

示例 4:获取并运行 cmdlet 帮助示例

$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code

此命令检索并运行 cmdlet 帮助主题中的 Get-EventLog 第一个示例。

若要运行其他 cmdlet 的示例,请将变量的值 $Cmdlet_name 更改为 cmdlet 的名称。 并将变量更改为 $Example_number 要运行的示例编号。 如果示例编号无效,该命令将失败。

注释

如果帮助文件中的示例代码在示例中具有输出,PowerShell 将尝试运行输出以及代码,并引发错误。

参数

-Command

指定要运行的命令或表达式。 键入命令或表达式,或输入包含命令或表达式的变量。 需要 Command 参数。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。

输入

String

可以通过管道传递表示要调用此 cmdlet 的表达式的字符串。 使用 $input 自动变量来表示命令中的输入对象。

PSObject

可以通过管道传递表示要调用此 cmdlet 的表达式的对象。 使用 $input 自动变量来表示命令中的输入对象。

输出

None

此 cmdlet 不返回自己的输出,但调用的命令可能会返回输出。

备注

PowerShell 包含以下与 Invoke-Expression相关的别名:

  • 所有平台:
    • iex

在大多数情况下,使用 PowerShell 的调用运算符调用表达式并实现相同的结果。 调用运算符是一种更安全的方法。 有关详细信息,请参阅 about_Operators。