我正在运行一个调用 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 = `powershell.exe powershellscript.ps1`;
foreach (@output)
{
print $_;
}
使用反引号运行并收集输出:
my @output = ` ...`
如果您也想要返回码(状态),请执行(例如):
perl -e '@output=`/bin/date`;print $?>>8,"\n";print "@output"'
有关解释返回码的更多信息,请参阅系统。
附录
qx(STRING)
您可以按照perlop中的说明使用反引号来代替有时读起来很烦人的反引号。这类似于在 shell 脚本中收集进程输出,在与 POSIX 兼容的 shell 中,可以使用古老的反引号进行捕获,或者使用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: $!";