Invoke-Expression和Invoke-Expression -Command之间的差异

时间:2013-09-05 13:46:23

标签: powershell powershell-v2.0

有人可以解释Invoke-Expression $testInvoke-Expression -Command $test之间的差异吗?

变量测试是:

 $test = "notepad.exe myfile.txt"

4 个答案:

答案 0 :(得分:8)

Invoke-Expression $testInvoke-Expression -Command $test都相同。两者都会将$test放入位置1的'command'参数中。-Command是可以放入的可选参数名称。

SYNTAX
    Invoke-Expression [-Command] <string> [<CommonParameters>]

答案 1 :(得分:4)

它们在功能上是等同的。 -Command是cmdlet在CommonParameters集合中使用的唯一参数,以及第一个(默认情况下,因为它是唯一的)在位置使用时的唯一参数。

您在第二个示例中所做的就是明确命名参数,而不是依赖于位置。这是一个很好的习惯。详细,但面向未来,它使你的意图清晰。

答案 2 :(得分:1)

两者都不相同:

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

Invoke-Command :在本地和远程计算机上运行命令。

答案 3 :(得分:-2)

命令类似但行为不同。例如:

$sb = [scriptblock]::Create( "test-path 'c:'")
iex $sb
icm $sb

iex会产生错误,而icm则不会。