有人可以解释Invoke-Expression $test
和Invoke-Expression -Command $test
之间的差异吗?
变量测试是:
$test = "notepad.exe myfile.txt"
答案 0 :(得分:8)
Invoke-Expression $test
和Invoke-Expression -Command $test
都相同。两者都会将$test
放入位置1的'command'参数中。-Command
是可以放入的可选参数名称。
SYNTAX
Invoke-Expression [-Command] <string> [<CommonParameters>]
答案 1 :(得分:4)
它们在功能上是等同的。 -Command
是cmdlet在CommonParameters
集合中使用的唯一参数,以及第一个(默认情况下,因为它是唯一的)在位置使用时的唯一参数。
您在第二个示例中所做的就是明确命名参数,而不是依赖于位置。这是一个很好的习惯。详细,但面向未来,它使你的意图清晰。
答案 2 :(得分:1)
答案 3 :(得分:-2)
命令类似但行为不同。例如:
$sb = [scriptblock]::Create( "test-path 'c:'")
iex $sb
icm $sb
iex
会产生错误,而icm
则不会。