有人可以帮我解释一下这里发生了什么吗?对不起,如果这是一个基本问题, 我从我试图写的管道表达式中简化了它:
$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 *
我希望所有这四个产生相同的结果
答案 0 :(得分:5)
引号中的表达式被解释为单个参数。在第三个命令中,shell将其解释为对没有参数的命令“dir C:\
”的请求,而不是对参数为“{{1}”的命令“dir
”的请求。 }”。
答案 1 :(得分:5)
如果要“执行”包含任意脚本的字符串,请使用Invoke-Expression cmdlet,例如:
Invoke-Expression“dir $ foo”