我想评估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
答案 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 -