有关PowerShell中命令执行的问题

时间:2009-09-11 19:03:51

标签: powershell

有人可以帮我解释一下这里发生了什么吗?对不起,如果这是一个基本问题, 我从我试图写的管道表达式中简化了它:

$foo = pwd
$cmd = "dir"

& $cmd $foo #Works

dir $foo  #Works

& "dir $foo" #Error

*术语'dir C:\'不被识别为cmdlet,函数,可操作程序或脚本文件。验证该术语,然后重试。

在行:1个字符:2 +& <<<< “dir $ foo”*

dir pwd #Error

* Get-ChildItem:找不到路径'C:\ pwd',因为它不存在。

在行:1个字符:4 + dir<<<< PWD *

我希望所有这四个产生相同的结果

2 个答案:

答案 0 :(得分:5)

引号中的表达式被解释为单个参数。在第三个命令中,shell将其解释为对没有参数的命令“dir C:\”的请求,而不是对参数为“{{1}”的命令“dir”的请求。 }”。

答案 1 :(得分:5)

如果要“执行”包含任意脚本的字符串,请使用Invoke-Expression cmdlet,例如:

Invoke-Expression“dir $ foo”