Invoke-Expression
在本地计算机上运行命令或表达式。
语法
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
说明
Invoke-Expression cmdlet 以命令的形式计算或运行指定的字符串,并返回表达式或命令的结果。 如果没有 Invoke-Expression,在命令行上提交的字符串将返回 (回显) 保持不变。
示例
示例 1:计算表达式
PS C:\> $Command = "Get-Process"
PS C:\> $Command
Get-Process
PS C:\> 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 变量。
第二个命令显示在命令行键入变量名称的效果。 Windows PowerShell 回显该字符串。
第三个命令使用 Invoke-Expression 来计算字符串。
示例 2:在本地计算机上运行脚本
PS C:\> Invoke-Expression -Command "C:\ps-test\testscript.ps1"
PS C:\> "C:\ps-test\testscript.ps1" | Invoke-Expression
这些命令使用 Invoke-Expression 在本地计算机上运行 TestScript.ps1 脚本。 这两个命令是等效的。 第一个 使用 Command 参数指定要运行的命令。 第二个使用管道运算符 (|) 将命令字符串发送到 Invoke-Expression。
示例 3:运行变量中的命令
PS C:\> $Command = 'Get-Process | where {$_.cpu -gt 1000}'
PS C:\> Invoke-Expression $Command
此示例将运行 $Command 变量中保存的一个命令字符串。
命令字符串用单引号括起来, $_
因为它包含一个代表当前对象的变量 。
如果变量用双引号引起来,则在 $_
将变量保存在$Command变量中之前,变量将被替换为其值。
示例 4:获取并运行 cmdlet 帮助示例
PS C:\> $Cmdlet_name = "Get-EventLog"
PS C:\> $Example_number = 1
PS C:\> $Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
PS C:\> Invoke-Expression $Example_code
此命令检索和运行 Get-EventLog cmdlet 帮助主题中的第一个示例。
若要运行其他 cmdlet 的示例,请将 $Cmdlet_name 变量的值更改为该 cmdlet 的名称。 另外,请将 $Example_number 变量更改为要运行的示例编号。 如果示例数字无效,则该命令将失败。
参数
-Command
指定要运行的命令或表达式。 键入该命令或表达式,或输入包含该命或表达式的变量。 Command 参数是必需的。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
输入
System.String or PSObject
可以通过管道将表示命令的对象传递给 Invoke-Expression。 使用 $Input 自动变量来表示命令中的输入对象。
输出
PSObject
返回由调用的命令生成的输出, (Command 参数) 的值。
备注
表达式是可以计算并生成结果的语句,例如 Windows PowerShell 命令。
在脚本中使用 Invoke-Expression cmdlet 时一定要谨慎。 使用 Invoke-Expression 运行用户输入的命令时,请在运行该命令之前验证该命令是否可安全运行。 通常,最好将脚本设计为包含预定义的输入选项,而不允许随意输入。