如何评估来自stdin的powershell脚本输入

时间:2012-12-14 09:45:36

标签: powershell stdin

我想评估Powershell中StdIn的内容,如下所示:

echo "echo 12;" | powershell -noprofile -noninteractive -command "$input | iex"

输出:echo 12;

不幸的是,$input不是字符串,而是System.Management.Automation.Internal.ObjectReader,这使得iex无法正常工作......因为这个工作正常:

powershell -noprofile -noninteractive -command "$command = \"echo 12;\"; $command | iex"

输出:12

2 个答案:

答案 0 :(得分:4)

以下方法可行:

使用scriptblock:

echo "echo 12;" | powershell -noprofile -noninteractive -command { $input | iex }

或使用单引号来避免字符串插值:

 echo "echo 12;" | powershell -noprofile -noninteractive -command '$input | iex'

所以$ input变量没有展开,字符串'$ input'传递给iex。

这两个都给了我“12”。

答案 1 :(得分:0)

只需使用 - 作为源文件“名称”:

echo "echo 12;" | powershell -noprofile -noninteractive -