You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell变量替换失效:curl调用Mailgun API附件参数被忽略

解决PowerShell中curl动态附件参数失效的问题

你遇到的问题根源是:PowerShell不会自动将字符串形式的参数拆分成命令所需的独立参数项。当你把"-F attachment='1.txt'"赋值给变量后,curl会把整个字符串当作一个单独的参数接收,而非识别成-F和attachment='1.txt'两个有效参数,因此附件参数被忽略。

以下是两种可行的解决方法:

方法一:用数组存储单个附件参数并展开

将附件相关的参数拆分为数组的独立元素,然后使用PowerShell的splatting语法(@变量名)展开参数:

$attParams = '-F', "attachment='1.txt'"
curl -s --user 'api:***' `
  https://api.eu.mailgun.net/v3/***.com/messages `
  -F from='Builder <failed-tests@fff-software.com>' `
  -F to=eduard.dubilyer@fff-software.com `
  -F subject='Build failed!!!' `
  -F text='Your build has been failed.' @attParams

方法二:用数组存储所有参数(更灵活)

如果后续需要动态调整更多参数,可以把所有curl参数都放到数组中,统一展开:

$allCurlParams = @(
  '-s',
  '--user', 'api:***',
  'https://api.eu.mailgun.net/v3/***.com/messages',
  '-F', 'from=Builder <failed-tests@fff-software.com>',
  '-F', 'to=eduard.dubilyer@fff-software.com',
  '-F', 'subject=Build failed!!!',
  '-F', 'text=Your build has been failed.',
  '-F', "attachment='1.txt'"
)
curl @allCurlParams

关键说明

  • 永远不要把多个命令参数整合成单个字符串传递给PowerShell命令,它不会像bash那样自动拆分字符串为参数项。
  • Splatting语法(@前缀)是PowerShell中处理动态参数的标准方式,能确保数组中的每个元素被当作独立的命令参数传递。

内容的提问来源于stack exchange,提问作者Eduard Dubilyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 00:50:01