powershell 尝试将“SetDeviceName”操作与Microsoft Graph一起使用

u7up0aaq  于 2023-04-21  发布在  Shell
关注(0)|答案(2)|浏览(147)

尝试做一个批量重命名的设备时,他们还没有登录了很长一段时间.我已经设法收集的信息,我需要它和管道,所以它出来正确.但由于某种原因,我得到坏的请求和我的格式是一些如何错误,但不能找出什么.尝试了每一种类型的修改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"
}

知道我哪里做错了吗?

bq9c1y66

bq9c1y661#

还有另一种重命名批量设备的方法:

文件参考:https://learn.microsoft.com/en-us/mem/intune/remote-actions/device-rename#bulk-rename-devices。

vltsax25

vltsax252#

您正在使用的URI不正确。您可以通过在Web浏览器中检查开发人员工具中的网络选项卡,执行设备重命名并检查浏览器推出的setDeviceName POST来查找正确的URI,并且您也可以始终使用图形资源管理器进行测试。
无论如何,在脚本中使用setDeviceName的正确URI应该是:

$URI = "https://graph.microsoft.com/beta/deviceManagement/managedDevices('$deviceID')/setDeviceName"

或者,如果您使用Microsoft Graph SDK powershell模块和Connect-MsGraph命令,则可以通过使用Invoke-MSGraphRequest而不是Invoke-RestMethod来避免在头中包含authtoken和content-type。这将使用已包含的那些参数 Package 请求,因此您不必在POST请求中提供它们。请注意,请求的主体与内容参数一起使用,而不是与主体参数一起使用。

Invoke-MSGraphRequest -HttpMethod POST -Url $uri -Content $JSONPayload -Verbose -ErrorAction Continue

相关问题