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

调用Microsoft Graph SetDeviceName批量重命名设备返回Bad Request问题

问题原因与修复方案

以下按触发概率从高到低列出代码存在的问题:

  • 请求头格式错误
    代码中直接将$appauthToken传入-Headers参数的写法不符合Invoke-RestMethod的参数要求。该参数必须接收哈希表结构的键值对,不能直接传入token字符串,正确的请求头构造方式如下:
    $requestHeaders = @{
        Authorization = "Bearer $appauthToken"
    }
    
    直接传入字符串会导致HTTP请求头格式不符合规范,被服务端判定为无效请求返回400。
  • 新设备名长度超限
    Windows设备的主机名最大支持15个字符,在原有设备名前拼接Test-前缀后,如果原设备名长度超过10位,总长度就会超出系统限制,接口会直接返回400拒绝请求。建议执行接口调用前先打印生成的新名称做长度校验,超长名称做截断处理。
  • PowerShell 5.1默认编码不匹配
    PowerShell 5.1自带的Invoke-RestMethod发送JSON请求时默认使用ISO-8859-1编码,而非接口要求的UTF-8。如果设备名包含非ASCII字符(比如中文、特殊符号),会导致服务端解析请求体失败。解决方法是将ContentType参数显式设置为application/json; charset=utf-8。
  • 过期设备状态不支持修改
    筛选条件匹配的是316天未同步的失活设备,这类设备在Intune服务端大多被标记为过期状态,不支持触发setDeviceName这类主动设备操作,调用这类设备的接口也会返回400错误。另外需要提前校验$deviceID是否为空,空ID会导致请求URI格式错误触发400。

调试时可以先取一个近期同步过、设备名较短的测试设备ID单独调用接口,先打印$Body变量确认生成的JSON结构为{"deviceName":"xxx"}的标准格式,再逐步排查其他问题。

内容的提问来源于stack exchange,提问作者Niklas Christensen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:39:19