使用这个脚本:https://github.com/byterogues/powershell-bittrex-api,我从另一个脚本调用。
EG
$order = .\bittrex-api.ps1 -action buylimit -market BTC-TX -quantity 1 -rate 0.00011300
bittrex-api.ps1捕获错误并在屏幕上显示
BITTREX错误:API查询返回错误。错误消息:MIN_TRADE_REQUIREMENT_NOT_MET
如何将bittrex-api.ps1的输出捕获到变量中,以便在基本脚本中使用此变量?
你不能。该脚本使用Write-Host
输出错误。 Write-Host
只将文本写入控制台,它不返回任何对象,这意味着没有任何东西可以捕获。
我建议修改脚本以使用其他cmdlet,如Write-Error
,Write-Output
或任何其他输出到流的Write-*
(您可以将其重定向到stdout-stream并保存)。
见http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful/
补充Frode F.'s helpful answer,明智地建议修改脚本以使用Write-Error
进行错误报告:
如果修改代码不是一个选项并且您正在使用PSv5 +,则可以捕获Write-Host
输出,因为PSv5 Write-Host
写入新引入的信息输出流(主要是Write-Information
设计用于写入):
PowerShell的输出流已编号,信息流的编号为6
,因此输出重定向表达式6>&1
将信息流重定向到成功输出流,其编号为1
,允许在变量中进行常规捕获,如以下示例所示:
# PSv5+
$captured = & { Write-Host 'write-host output' } 6>&1
$captured # output what was captured -> 'write-host output'
要了解有关PowerShell输出流和重定向的更多信息,请运行Get-Help about_Redirection