尝试做一个批量重命名的设备时,他们还没有登录了很长一段时间.我已经设法收集的信息,我需要它和管道,所以它出来正确.但由于某种原因,我得到坏的请求和我的格式是一些如何错误,但不能找出什么.尝试了每一种类型的修改URI,但没有运气.
这应该根据Microsoft's Doc about SetDevicename action工作
$date = (Get-date (Get-date).adddays(-316) -format "yyy-MM-ddTHH:mm:ssZ")
$devices | where {$_.lastSyncDateTime -le $date} | ForEach-Object {
$newname = "Test-$($_.Devicename)"
$deviceID = "$($_.ID)"
$URI = "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$deviceID/setDeviceName"
$Body = @{ "deviceName" = "$NewName" } | ConvertTo-Json
$Method = "POST"
Invoke-RestMethod -Uri $URI -Method $Method -Headers $appauthToken -body $body -ContentType "application/json"
}
知道我哪里做错了吗?
2条答案
按热度按时间bq9c1y661#
还有另一种重命名批量设备的方法:
文件参考:https://learn.microsoft.com/en-us/mem/intune/remote-actions/device-rename#bulk-rename-devices。
vltsax252#
您正在使用的URI不正确。您可以通过在Web浏览器中检查开发人员工具中的网络选项卡,执行设备重命名并检查浏览器推出的setDeviceName POST来查找正确的URI,并且您也可以始终使用图形资源管理器进行测试。
无论如何,在脚本中使用setDeviceName的正确URI应该是:
或者,如果您使用Microsoft Graph SDK powershell模块和Connect-MsGraph命令,则可以通过使用Invoke-MSGraphRequest而不是Invoke-RestMethod来避免在头中包含authtoken和content-type。这将使用已包含的那些参数 Package 请求,因此您不必在POST请求中提供它们。请注意,请求的主体与内容参数一起使用,而不是与主体参数一起使用。