PowerShell スクリプトを呼び出す Perl スクリプトを実行しています。これから戻り値を取得する方法はありますか? 私は似たようなことを試しました
my @output = "powershell.exe powershellscript.ps1;
foreach(@output)
{
print $_;
}
そして、私はそれから何も得ません。戻り値をプッシュするには、powershell スクリプトに何かを追加する必要がありますか?
PowerShell スクリプトを呼び出す Perl スクリプトを実行しています。これから戻り値を取得する方法はありますか? 私は似たようなことを試しました
my @output = "powershell.exe powershellscript.ps1;
foreach(@output)
{
print $_;
}
そして、私はそれから何も得ません。戻り値をプッシュするには、powershell スクリプトに何かを追加する必要がありますか?
バックティックを使用して実行し、出力を収集します。
my @output = ` ...`
戻りコード (ステータス) も必要な場合は、次のようにします (例):
perl -e '@output=`/bin/date`;print $?>>8,"\n";print "@output"'
戻りコードの解釈の詳細については、システムを参照してください。
補遺
時々読むのが煩わしいバッククォートの代わりに、 perlopqx(STRING)
で説明されているように使うことができます。これは、シェル スクリプトでプロセス出力を収集することに似ています。POSIX 準拠のシェルでは、古風なバッククォートを使用してキャプチャを行うことができます。OUTPUT=$(/bin/date)
名前付きパイプを使用してみてください:
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: $!";