8

次のように、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
4

2 に答える 2

6

次のように動作します。

スクリプトブロックを使用します。

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

または、文字列補間を避けるために一重引用符を使用します。

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

そのため、$input 変数は展開されず、文字列 '$input' が iex に渡されます。

これらは両方とも「12」です。

于 2012-12-14T11:32:07.997 に答える