Windows PowerShell中curl的--data-binary @-参数无法识别的解决方法
解决PowerShell中
--data-binary @-不被识别的问题 问题根源
PowerShell里的curl是Invoke-WebRequest的默认别名,和系统原生的curl.exe不是同一个工具,参数规则完全不同,所以--data-binary @-这类原生curl参数会被判定为无效。而命令提示符直接调用系统原生curl,因此能正常执行。
可行解决方案
1. 直接调用原生curl.exe
把命令里的curl替换成curl.exe,强制调用系统自带的curl工具,参数就能正常解析:
curl.exe data.html | curl.exe -H "Content-type: text/html; encoding=UTF8" --data-binary @- http://www.example.com
2. 取消PowerShell的curl别名
临时取消别名,让curl指向原生curl,当前会话内直接用原命令即可:
Remove-Item Alias:curl
如果要永久生效,把这条命令添加到PowerShell配置文件(运行$PROFILE可查看路径)中,每次启动PowerShell都会自动取消别名。
3. 改用PowerShell原生命令改写
如果习惯用PowerShell自带工具,可把命令改写成以下形式:
# 读取文件内容并发送 $htmlContent = Get-Content -Path data.html -Raw -Encoding UTF8 Invoke-WebRequest -Uri http://www.example.com -Method Post -ContentType "text/html; encoding=UTF8" -Body $htmlContent
或者通过管道传递内容:
Get-Content -Path data.html -Raw -Encoding UTF8 | Invoke-WebRequest -Uri http://www.example.com -Method Post -ContentType "text/html; encoding=UTF8"
内容的提问来源于stack exchange,提问作者Chuck_Berry
相关产品推荐
相关产品推荐

