如何通过Rest-API在Airwatch/Workspace ONE中设置设备名称(作为友好名称)



我希望通过Rest-API将iOS设备的设备名称和友好名称更改为不同的值。我可以像这样更改友好名称:

$requestHeaders = @{
'Accept' = 'application/json'
'Authorization' = $auth
'aw-tenant-code' = $wsoApiKey
}
$body = @{
'DeviceFriendlyName' = $WsoDeviceName
}
$body = ConvertTo-Json $body
$uri = $wsoApiUri + $WsoDevice.Id.Value
Invoke-RestMethod -Uri $uri -ContentType "application/json; charset=utf-8" -Headers $requestHeaders -Body $body -Method Put

但我似乎找不到正确的属性来改变设备名称,既不是在本地API帮助(在server.local/API/help),也不是在vmware文档。发送一个put请求来更改DeviceName或devicereporttedname不会显示任何更改。其代码如下:

$body = @{
'DeviceName' = $WsoDeviceName
}

我知道通过web界面将友好名称设置为设备名称的可能性。也许有一种方法可以通过API激活该选项,我没有找到?在这种情况下,它将完成工作。

如果有人能给我指一下正确的方向,我会很高兴的。

问好Holewasch

我可以使用自定义MDM命令来完成这个任务。在下面的示例中,我在按序列号搜索设备时特别使用了POST /devices/commands方法。

$MdmCommandXml = [xml]@'
<dict>
<key>RequestType</key>
<string>Settings</string>
<key>Settings</key>
<array>
<dict>
<key>DeviceName</key>
<string></string>
<key>Item</key>
<string>DeviceName</string>
</dict>
</array>
</dict>
'@
$Auth = ""
$WsoApiKey = ""
$BaseUrl = "https://as<yourhostnumber>.awmdm.com/API/mdm"
$SerialNumber = ""
$Uri = "${BaseUrl}/devices/commands?command=CustomMdmCommand&searchBy=Serialnumber&id=${SerialNumber}"
$NewDeviceName = "NewDeviceName"
$MdmCommandXml.SelectSingleNode('//key[.="DeviceName"]/following-sibling::*[1]').InnerXml = $NewDeviceName
$RequestHeaders = @{
'Accept' = 'application/json'
'Authorization' = $Auth
'aw-tenant-code' = $WsoApiKey
}
$Body = @{
'CommandXml' = $MdmCommandXml.OuterXml
}
$Body = ConvertTo-Json $Body
Invoke-RestMethod -Uri $Uri -ContentType "application/json; charset=utf-8" -Headers $RequestHeaders -Body $Body -Method Post

我希望实现上述解决方案,以便重命名设备友好的名称。请参阅下面附带的脚本。当传递指定的uri值时,cmd输出如下:

'Invoke-RestMethod : Cannot validate argument on parameter 'Uri'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.' 

这表明我的uri变量没有被填充。我想知道访问此功能是否已更改与最近更新的API?

$MdmCommandXml = [xml]@'
<dict>
<key>RequestType</key>
<string>Settings</string>
<key>Settings</key>
<array>
<dict>
<key>DeviceName</key>
<string></string>
<key>Item</key>
<string>DeviceName</string>
</dict>
</array>
</dict>
'@
$server = "https://xxxxx.awmdm.com/"
$client_id = "client_id"
$client_secret = "client_secret"
$access_token_url="token_url"
$body = @{
grant_type    = "client_credentials"
client_id     = $client_id
client_secret = $client_secret
}
try {
$response = Invoke-WebRequest -Method Post -Uri $access_token_url -Body $body -UseBasicParsing
$response = $response | ConvertFrom-Json
$oauth_token = [string]$($response.access_token)
} catch {
$ErrorMessage = $PSItem | ConvertFrom-Json
Write-Log "Failed to create OAuth Token for: $env with following ErrorCode: $($ErrorMessage.errorCode) - $($ErrorMessage.message)" -ForegroundColor Red
}
$header_v1 = @{
"Authorization" = "Bearer " + $oauth_Token;
"Accept" = "application/json;version=1";
"Content-Type" = "application/json"
}
$header_v3 = @{
"Authorization" = "Bearer " + $oauth_Token;
"Accept" = "application/json;version=1";
"Content-Type" = "application/json"
}
$WsoApiKey = "WsoApiKey"
$BaseUrl = "https://xxxxx.awmdm.com/API/mdm"
$SerialNumber = "R52N30M3T3P"
$Uri = "${BaseUrl}/devices/commands?command=CustomMdmCommand&searchBy=Serialnumber&id=${SerialNumber}"                                                #$Uri = "${BaseUrl}/devices/commands?command=CustomMdmCommand&searchBy=Serialnumber&id=${SerialNumber}"
$NewDeviceName = "NewDeviceFriendlyName"
$uri = $wsoApiUri + $WsoDevice.Id.Value                
$MdmCommandXml.SelectSingleNode('//key[.="DeviceName"]/following-sibling::*[1]').InnerXml = $NewDeviceName
$test = $MdmCommandXml.SelectSingleNode('//key[.="DeviceName"]/following-sibling::*[1]').InnerXml;
$Body = @{
'CommandXml' = $MdmCommandXml.OuterXml
}
$Body = ConvertTo-Json $Body

Invoke-RestMethod -Uri "$server/api/mdm/devices/search?" -Method Get -Headers $header_v1
#Invoke-RestMethod -Uri $Uri -ContentType "application/json; charset=utf-8" -Headers $header_v1 -Body $Body -Method Get
Invoke-RestMethod -Uri $uri -ContentType "application/json; charset=utf-8" -Headers $header_v1 -Body $Body -Method Post

最诚挚的问候,利马

最新更新