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

PowerShell调用Azure OpenAI报错:找不到接受参数的位置参数

解决Azure OpenAI请求的PowerShell位置参数错误

问题场景

执行以下PowerShell命令调用Azure OpenAI的Completions API时:

curl ${OPENAI_API_BASE%/}/openai/deployments/try-davinci/completions?api-version=2022-06-01-preview -H @{"Content-Type"="application/json";"Authorization"= "Bearer $accessToken"} -d '{ "prompt": "Tell me a funny story." }'

收到报错:

Invoke-WebRequest : A positional parameter cannot be found that accepts argument '{ "prompt": "Tell me a funny story."'.
At line:1 char:1
+ curl ${OPENAI_API_BASE%/}/openai/deployments/try-davinci/completions? ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

报错原因

PowerShell中curl是Invoke-WebRequest的别名,而非原生curl工具,两者参数语法差异导致解析失败:

  1. -H参数的哈希表格式未正确包裹,被PowerShell错误拆分;
  2. 请求体内容的引号处理不符合PowerShell规则,被误认为位置参数;
  3. URL中的变量展开和路径截断语法是bash风格,PowerShell无法识别。

解决方案

方法1:使用PowerShell原生Invoke-WebRequest语法

# 定义请求头和请求体
$requestHeaders = @{
    "Content-Type" = "application/json"
    "Authorization" = "Bearer $accessToken"
}
$requestBody = '{ "prompt": "Tell me a funny story." }'

# 拼接正确的API地址,移除末尾斜杠
$apiUrl = "$($OPENAI_API_BASE.TrimEnd('/'))/openai/deployments/try-davinci/completions?api-version=2022-06-01-preview"

# 发送请求
Invoke-WebRequest -Uri $apiUrl -Headers $requestHeaders -Method Post -Body $requestBody

方法2:调用系统原生curl.exe(需环境支持)

如果系统已安装原生curl(如Windows 10 1803+、Git Bash或Linux环境),直接指定curl.exe避免PowerShell别名干扰:

curl.exe "$($OPENAI_API_BASE.TrimEnd('/'))/openai/deployments/try-davinci/completions?api-version=2022-06-01-preview" `
-H "Content-Type: application/json" `
-H "Authorization: Bearer $accessToken" `
-d '{ "prompt": "Tell me a funny story." }'

关键修正说明

  • 单独定义请求头和请求体变量,避免参数解析混乱;
  • 使用PowerShell的TrimEnd('/')替代bash的路径截断语法处理URL;
  • 用双引号包裹API地址,确保变量$OPENAI_API_BASE正常展开;
  • 调用原生curl时必须指定curl.exe,避免触发PowerShell的Invoke-WebRequest别名。

内容的提问来源于stack exchange,提问作者Manu Chadha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:12:38