Powershell 如何将调用表达式的输出管道化到字符串?

Powershell 如何将调用表达式的输出管道化到字符串?,powershell,Powershell,在Powershell脚本中,我可以这样做: Invoke-Expression "& `"C:\Scripts\psftp.exe`" ftp.blah.com" 我想通过管道将所有输出、错误等传输到字符串$output 我该怎么做?我在结尾尝试了以及$output=…,但似乎都没有捕获错误和排序。尝试以下方法: $output = Invoke-Expression "C:\Scripts\psftp.exe ftp.blah.com 2>&1" 调用操作符&的使用

在Powershell脚本中,我可以这样做:

Invoke-Expression "& `"C:\Scripts\psftp.exe`" ftp.blah.com"
我想通过管道将所有输出、错误等传输到字符串
$output

我该怎么做?我在结尾尝试了
以及
$output=…
,但似乎都没有捕获错误和排序。

尝试以下方法:

$output = Invoke-Expression "C:\Scripts\psftp.exe ftp.blah.com 2>&1"
调用操作符
&
的使用是不必要的,因为在本例中引用exe路径时,该路径不包含空格。如果路径包含空格,则需要将其引用,然后必须使用call运算符。也就是说,我不确定在这种情况下为什么需要使用
调用表达式。下面的例子同样适用

$output = C:\Scripts\psftp.exe ftp.blah.com 2>&1

我不会触摸命令提示符(它将自动),我如何在脚本中执行此操作?这就是脚本。在命令提示符下键入的任何内容都可以放入脚本并执行,即自动执行。我能想到的唯一例外是需要用户输入的命令,比如readhost。以这种方式执行psftp.exe是否会提示输入?我要补充的是,这通常会返回一个字符串数组;如果希望将所有输出捕获为单个字符串,请在命令末尾追加“| Out string”。我得到一个错误。路径中的非法字符!我的路径有空格,所以我的路径都是双格的。