Azure Runbook中使用系统托管身份连接AzureAD的技术求助
解决Azure Runbook中系统托管身份连接AzureAD的问题
1. 为系统托管身份配置Azure AD权限
- 给Runbook所属自动化账户的系统托管身份分配必要的Azure AD角色,核心权限需求:
- Directory.Read.All:读取AAD设备信息
- Group.ReadWrite.All:管理AAD组的创建、成员添加/移除操作
- 操作步骤:
- 进入Azure门户→目标自动化账户→左侧「身份」→「系统分配」,复制身份的对象ID
- 进入Azure AD→「角色和管理员」,搜索并选择对应角色(如「目录读写者」或自定义精细角色)→「添加分配」,粘贴上述对象ID完成权限分配
2. Runbook中连接AzureAD的正确代码
确保自动化账户已安装AzureAD或AzureADPreview模块,使用系统托管身份直接连接:
# 用系统托管身份连接AzureAD Connect-AzureAD -Identity # 若需明确指定租户,可添加TenantId参数 # Connect-AzureAD -Identity -TenantId "你的租户ID"
3. 完整的Mac设备分组Runbook示例
结合你的需求,完整流程代码如下:
# 用系统托管身份连接MS Graph(获取设备信息) Connect-MSGraph -Identity # 获取所有Mac设备,筛选架构信息 $macDevices = Get-MgDevice -Filter "operatingSystem eq 'macOS'" -Select id, displayName, deviceProperties # 预定义两组的AAD组ID(可提前创建或在代码中动态创建) $arm64GroupId = "arm64设备组ID" $x64GroupId = "x64设备组ID" # 遍历设备按架构分组添加 foreach ($device in $macDevices) { $processorArch = $device.deviceProperties["processorArchitecture"] $deviceObjectId = $device.Id switch ($processorArch) { "Arm64" { Add-AzureADGroupMember -ObjectId $arm64GroupId -RefObjectId $deviceObjectId } "X64" { Add-AzureADGroupMember -ObjectId $x64GroupId -RefObjectId $deviceObjectId } } } # 断开连接(可选) Disconnect-AzureAD Disconnect-MSGraph
注意事项
- 自动化账户需提前安装
AzureAD、Microsoft.Graph.Devices模块,可在「模块」页面添加或更新至最新版本 - 系统托管身份的权限分配需等待数分钟生效,不要立即执行测试
- 若使用
AzureADPreview模块,连接命令一致,但部分cmdlet参数可能有差异,需留意版本兼容性
内容的提问来源于stack exchange,提问作者SophisticatedBear
相关产品推荐
相关产品推荐

