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

如何获取Azure Active Directory指定组中所有设备的所有者信息

实现方案

完全可以通过PowerShell调用Microsoft Graph接口批量完成操作,无需手动逐台处理,操作前置要求:你需要拥有Azure AD全局读取者、目录读取者或更高的设备管理、组管理权限。

步骤1:安装并连接Microsoft Graph PowerShell模块

# 安装模块(仅首次操作需要执行)
Install-Module Microsoft.Graph -Scope CurrentUser

# 连接接口并申请所需权限
Connect-MgGraph -Scopes "Device.Read.All", "GroupMember.Read.All", "GroupMember.ReadWrite.All"

步骤2:获取目标组内的所有设备对象

# 替换为你要操作的Azure AD组的对象ID
$targetGroupId = "替换为你的组ID"

# 如果不知道组ID,可以通过组名查询获取
# Get-MgGroup -Filter "displayName eq '替换为你的组名称'"

# 拉取组内所有设备类型的成员
$groupDevices = Get-MgGroupMember -GroupId $targetGroupId -All | Where-Object {$_.AdditionalProperties.'@odata.type' -eq '#microsoft.graph.device'}

步骤3:批量查询所有设备的所有者并去重

$deviceOwnerIds = @()
foreach ($device in $groupDevices) {
    # 拉取设备的注册所有者,默认每台设备仅1个注册所有者
    $owner = Get-MgDeviceRegisteredOwner -DeviceId $device.Id -All | Select-Object -First 1
    if ($owner) {
        $deviceOwnerIds += $owner.Id
    }
}

# 对所有者ID去重,避免重复添加同一用户到组
$uniqueOwnerIds = $deviceOwnerIds | Select-Object -Unique

未配置注册所有者的设备会自动被跳过,你可以执行$uniqueOwnerIds.count确认最终要添加的用户总数做校验。

步骤4:批量将所有者添加为目标组成员

foreach ($userId in $uniqueOwnerIds) {
    New-MgGroupMember -GroupId $targetGroupId -DirectoryObjectId $userId
}

可选步骤:删除组内原有的设备成员

如果你确认不需要保留设备类型的组成员,可以执行以下命令批量删除:

foreach ($device in $groupDevices) {
    Remove-MgGroupMember -GroupId $targetGroupId -DirectoryObjectId $device.Id
}

注意事项

  • 执行添加/删除操作前,可以先导出$uniqueOwnerIds和$groupDevices的明细清单做人工核对,避免误操作
  • 所有写入类命令都可以加-WhatIf参数预览执行结果,确认符合预期后再正式运行
  • 如果你仍在使用旧版AzureAD PowerShell模块,替换对应cmdlet为Get-AzureADGroupMember、Get-AzureADDeviceRegisteredOwner、Add-AzureADGroupMember即可实现相同逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 08:27:03