当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Invoke-Expression (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:05:39 浏览:13 分类:玩电脑

Invoke-Expression (Microsoft.PowerShell.Utility)


Invoke-Expression

模块 :Microsoft.PowerShell.Utility

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

句法

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

描述

Invoke-Expression cmdlet 将指定字符串作为命令求值或运行,并返回表达式或命令的结果。如果没有 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

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

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

笔记

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

参数

-Command

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

类型 :

String

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

输入

字符串

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

PSObject

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

输出

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

笔记

PowerShell 包含以下 Invoke-Expression 别名:

  • 所有平台:

      iex

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

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯