0

PowerShell スクリプトを呼び出す Perl スクリプトを実行しています。これから戻り値を取得する方法はありますか? 私は似たようなことを試しました

my @output = "powershell.exe powershellscript.ps1;
foreach(@output)
{
   print $_;
}

そして、私はそれから何も得ません。戻り値をプッシュするには、powershell スクリプトに何かを追加する必要がありますか?

4

3 に答える 3

1

バックティックを使用して実行し、出力を収集します。

my @output = ` ...`

戻りコード (ステータス) も必要な場合は、次のようにします (例):

perl -e '@output=`/bin/date`;print $?>>8,"\n";print "@output"'

戻りコードの解釈の詳細については、システムを参照してください。

補遺

時々読むのが煩わしいバッククォートの代わりに、 perlopqx(STRING)で説明されているように使うことができます。これは、シェル スクリプトでプロセス出力を収集することに似ています。POSIX 準拠のシェルでは、古風なバッククォートを使用してキャプチャを行うことができます。OUTPUT=$(/bin/date)

于 2013-06-14T17:14:56.347 に答える
1

名前付きパイプを使用してみてください:

open(PWRSHELL, "/path/to/powershell.exe powershellscript.ps1 |") or die "can't open powershell: $!";
while (<PWRSHELL>) {
    # do something
}
close(PWRSHELL) or warn "can't close powershell: $!";
于 2013-06-14T17:18:22.963 に答える