我在PowerShell上运行此curl命令。curl.exe -0 -v --cert $cert --key $key --cacert $cacert GET $URIString
当一切正常时,我可以得到输出,但我想得到它的“日志”,例如。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0* Could not resolve host: GET
* Closing connection 0
curl: (6) Could not resolve host: GET
* Trying XXX.XXX.XXX.XXX...
* TCP_NODELAY set
* Connected to xxxxxxxxxx (XXX.XXX.XXX.XXX) port 443 (#1)
* ALPN, offering http/1.1
* unable to set private key file: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' type PEM
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
* Closing connection 1
curl: (58) unable to set private key file: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX' type PEM
这用于错误处理。
2条答案
按热度按时间rfbsl7qr1#
当从PowerShell调用外部程序时,您可能希望使用
Start-Process
cmdlet来获得对它的一些控制。例如,您可以评估退出代码。此外,您还可以访问它的标准输出流和(我认为这对您来说更重要)它的标准错误流。如果您这样调用curl:您可以随后计算两个流
stdout
和stderr
。如果你还想检查退出代码,可以像这样调用curl:
ukxgm1gy2#
不幸的是,我也找不到一个好的解决方案。我唯一能捕获的是HTML输出,我猜你也得到了同样的结果。
也许你可以尝试PowerShell的原生
Invoke-Webrequest
命令。但是它不像curl那样支持那么多选项,所以你可能需要做一些修改。例如This question显示了如何替换--cacert
标志。--key
标志和--cert
可以用一个PFX文件替换,根据this answer。其他的都应该有原生支持。使用此命令,您可以通过将powershell命令的输出保存到一个变量或输出到一个文件来获取它。