Can someone explain the differences between Invoke-Expression $test
and Invoke-Expression -Command $test
?
variable test is:
$test = "notepad.exe myfile.txt"
Can someone explain the differences between Invoke-Expression $test
and Invoke-Expression -Command $test
?
variable test is:
$test = "notepad.exe myfile.txt"
两者都是一样Invoke-Expression $test
的Invoke-Expression -Command $test
。两者都将放入$test
位置 1 的“命令”参数-Command
中。您可以放入的 is 和可选参数名称。
SYNTAX
Invoke-Expression [-Command] <string> [<CommonParameters>]
它们在功能上是等效的。-Command
是 cmdlet 采用的唯一参数,它不在CommonParameters
集合中,并且是位置使用时的第一个参数(默认情况下,因为它是唯一的参数)。
您对第二个示例所做的只是明确命名参数,而不是依赖位置。养成这样的好习惯。冗长,但面向未来,它使您的意图一清二楚。
这些命令相似,但行为不同。例如:
$sb = [scriptblock]::Create( "test-path 'c:'")
iex $sb
icm $sb
iex
会产生错误而不会icm
。