如何在Powershell中管理.exe执行的所有输出?

JBu*_*ace 18 powershell output

在Powershell中,我正在运行psftp.exe这是PuTTy的主页.我这样做:

$cmd = "psftp.exe"
$args = '"username@ssh"@ftp.domain.com -b psftp.txt';
$output = & $cmd $args
Run Code Online (Sandbox Code Playgroud)

这有效; 我正在打印出来$output.但它只捕获该变量中的一些输出(如"远程工作目录[...]")并将其他输出抛出到如下错误类型:

psftp.exe : Using username "username@ssh".
At C:\full_script.ps1:37 char:20
+         $output = & <<<<  $cmd $args
    + CategoryInfo          : NotSpecified: (Using username "username@ssh".:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
Run Code Online (Sandbox Code Playgroud)

这个"使用用户名......"等看起来像普通的FTP消息.如何确保所有输出都被输入$output

aph*_*ria 17

问题是某些输出正在发送到STDERR,并且重定向在PowerShell中的工作方式与CMD.EXE中的不同.

如何将控制台程序的输出重定向到PowerShell中的文件有一个很好的问题描述和一个聪明的解决方法.

基本上,CMD使用可执行文件作为参数调用.像这样:

UPDATE

我修复了我的代码,所以它实际上是有效的.:)

$args = '"username@ssh"@ftp.domain.com -b psftp.txt';
$output = cmd /c psftp.exe $args 2`>`&1
Run Code Online (Sandbox Code Playgroud)


And*_*ndi 9

试一试

$output = [string] (& psftp.exe 'username@ssh@ftp.domain.com' -b psftp.txt 2>&1)
Run Code Online (Sandbox Code Playgroud)

有一个关于制作错误记录的PowerShell 错误2>&1.该[string]投工作解决它.