PowerShell Invoke-RestMethod传Bearer令牌Header变量未替换报未授权错误
问题定位
你的脚本报Unauthorized的核心原因是Authorization请求头的格式错误,并非$Token.access_token变量未替换。
当前代码中'Authorization' = ""Bearer $Token.access_token""的写法,会给认证值额外包裹一层双引号,实际发送给接口的头值为:
"Bearer 你获取到的access_token内容"
而MuleSoft Anypoint接口要求的Bearer认证头格式不带外层双引号,正确格式为:
Bearer 你获取到的access_token内容
多余的转义双引号导致接口无法正确解析令牌,直接返回认证失败。
修复方法
修改Headers哈希表中Authorization字段的赋值,去掉多余的转义双引号,同时建议用PowerShell子表达式包裹对象属性,避免字符串插值时的属性解析异常,修正后的代码如下:
$Headers = @{ 'X-ANYPNT-ENV-ID' = '4af1b64' 'X-ANYPNT-ORG-ID' = 'c659234ad' 'Authorization' = "Bearer $($Token.access_token)" }
补充校验项
如果修改后仍报认证错误,可逐一核对以下点:
- 单独复制脚本echo输出的access_token,用接口调试工具手动构造请求测试,确认令牌本身有效、未过期
- 核对X-ANYPNT-ENV-ID、X-ANYPNT-ORG-ID的值与当前access_token所属的组织、环境ID完全匹配,ID不匹配也会触发权限错误
- 确认后续调用Invoke-RestMethod时没有传入其他会覆盖Headers的参数,避免Authorization头被替换
内容的提问来源于stack exchange,提问作者wehelpdox
相关产品推荐
相关产品推荐

