为 Azure AD 用户获取 Edge 版本

为 Azure AD 用户获取 Edge 版本

我正在尝试在我域中的所有 Azure AD 用户计算机上安装 Microsoft Edge 版本。到目前为止,我有以下脚本,我认为它应该可以工作,但它不断为输出中列出的每个用户返回未经授权的错误。

# Set your application (client) ID, tenant ID, and client secret
$clientId = "client id goes here"
$tenantId = "tenant id goes here"
$clientSecret = "secret goes here"

# Get an access token for the Microsoft Graph API
$uri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$body = @{
    grant_type = "client_credentials"
    client_id = $clientId
    client_secret = $clientSecret
    scope = "https://graph.microsoft.com/.default"
}

$response = Invoke-RestMethod -Uri $uri -Method Post -ContentType "application/x-www-form-urlencoded" -Body $body
$accessToken = $response.access_token

# Get all users in the domain
$uri = "https://graph.microsoft.com/v1.0/users"
$headers = @{
    Authorization = "Bearer $accessToken"
}
$users = (Invoke-RestMethod -Uri $uri -Headers $headers).value

# Get the Edge version for each user
$edgeVersions = @()
foreach ($user in $users) {
    $uri = "https://graph.microsoft.com/beta/users/$($user.id)/devices"
    $devices = (Invoke-RestMethod -Uri $uri -Headers $headers).value

    foreach ($device in $devices) {
        if ($device.deviceOSType -eq "Windows") {
            $edgeVersion = $device.additionalProperties.'msedge_version'
            if ($edgeVersion) {
                $edgeVersions += [PSCustomObject]@{
                    User = $user.displayName
                    Device = $device.displayName
                    EdgeVersion = $edgeVersion
                }
            }
        }
    }
}

# Display the Edge versions
$edgeVersions | Format-Table -AutoSize

我从这里获取 ID:

显示所用 ID 的屏幕截图

我已授予 Azure 应用程序以下权限(可能超出需要):

显示已分配权限的屏幕截图

我通过右键单击并选择来加载 powershell Run As Administrator

它仍然说[Invoke-RestMethod is unauthorized]

我显然在某个地方缺少某些权限,但我不知道在哪里。有什么想法吗?

答案1

https://graph.microsoft.com/beta/users/userID/devices已弃用本文档页面因此无论权限如何它都不会返回任何数据。我不知道有哪个属性可以替代该msedge_version属性。

答案2

假设您确实通过查询获取了所有用户,那么令牌应该没问题,而且我认为权限也没有问题。正如 @Crimsonfox 提到的,列出用户设备的选项已被弃用

您可以在此处测试您的查询,还可以查看有哪些可用的选项: https://developer.microsoft.com/en-us/graph/graph-explorer

Unauthorized - 401 - 887ms我做了一些测试,执行时也收到 401 错误 ( ) https://graph.microsoft.com/beta/me/Devices。尝试使用已使用的 ID 时https://graph.microsoft.com/v1.0/users/6e7b768e-07e2-4810-8459-485f84f8f204/managedDevices,API 返回错误 400 - 错误请求。

未授权错误

我碰到本文返回已安装的应用程序,但我找不到有关 Microsoft Edge 以及如何获取其版本的任何信息。查询:

https://graph.microsoft.com/v1.0/me/teamwork/installedApps?$expand=teamsAppDefinition

答案3

如果问题出在请求上 https://graph.microsoft.com/beta/users/userID/devices,那么可能还有替代方案。

微软文章 列出拥有的设备 建议使用以下代码:

Import-Module Microsoft.Graph.Users

# A UPN can also be used as -UserId.
Get-MgUserOwnedDevice -UserId $userId

文章中给出了一个响应的示例,尽管我认为它与该命令的 HTTP 变体更相关:

HTTP/1.1 200 OK
Content-type: application/json

{
  "value": [
    {
      "id": "id-value"
    }
  ]
}

获得 ID 后,可以使用以下方式检索设备本身: Get-MgDevice 命令

参考 : 获取 MgUserOwnedDevice

相关内容