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

PowerShell传递日期参数至Azure REST API URI失败求助

我来帮你排查这个问题!你遇到的报错大概率是因为两个关键问题:一是URI里的参数分隔符用了HTML转义的&而非正确的&,导致API无法解析日期参数;二是未明确指定UTC时间格式,可能引发日期解析歧义。

问题根源拆解

  • 参数分隔符错误:你在URI中写的&是HTML环境下的转义字符,PowerShell构建请求时会直接将其作为字符串内容发送给API,最终导致startTime的参数值变成了类似2024-05-19&endTime=2024-05-20的无效内容,API解析失败后就抛出了“值小于2014-05-01”的错误。
  • 日期格式歧义:Azure消费API期望接收UTC标准格式的时间,直接使用本地日期字符串可能会因时区差异,导致API解析出的时间范围不符合你的预期。

修正后的完整代码

# 获取UTC标准的当前时间,避免时区偏差
$endDate = (Get-Date).ToUniversalTime()
$startDate = $endDate.AddDays(-1)

# 转换成API要求的ISO 8601格式(带时间节点和UTC后缀)
$startTime = $startDate.ToString('yyyy-MM-ddT00:00:00Z')
$endTime = $endDate.ToString('yyyy-MM-ddT23:59:59Z')

# 构建请求头
$header = @{"authorization"="bearer $key"}
# 使用正确的&作为参数分隔符,替换原有的&
$uri = "https://consumption.azure.com/v3/enrollments/$enrollment/usagedetailsbycustomdate?startTime=$startTime&endTime=$endTime"

# 发起请求(-UseBasicParsing可避免依赖IE组件)
$usageDetails = Invoke-RestMethod -Uri $uri -Headers $header -Method Get -UseBasicParsing
# 输出格式化后的JSON结果
$usageDetails | ConvertTo-Json -Depth 10

额外注意事项

  • 确保$enrollment和$key变量已正确赋值,否则会触发权限或路径类错误。
  • Azure消费API要求时间范围不能超过31天,你取最近两天的逻辑完全符合规则。
  • 强制使用UTC时间可以彻底避免不同时区下的日期解析偏差,确保API接收的时间范围与你的预期一致。

内容的提问来源于stack exchange,提问作者Guhan Palanisamy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:46:50