如何通过Azure Bash脚本将多个Service Principal添加至AAD组?
将多个服务主体添加到Azure AD管理组的Bash脚本解决方案
前提条件
- 已安装并升级至最新版Azure CLI:
az upgrade - 已通过Azure CLI登录并拥有足够权限:需要能读取服务主体、修改目标AAD管理组成员的权限(如
GroupMember.ReadWrite.All)
脚本实现
以下脚本可批量将指定服务主体添加到目标AAD管理组:
# 配置参数:替换为你的管理组名称和服务主体列表 MGMT_GROUP_NAME="你的AAD管理组名称" SP_NAMES=("myapp01" "myapp02" "myapp03") # 获取管理组的Object ID(添加成员需用ID而非名称) MGMT_GROUP_ID=$(az ad group show --group "$MGMT_GROUP_NAME" --query id -o tsv) # 检查是否成功获取管理组ID if [ -z "$MGMT_GROUP_ID" ]; then echo "错误:未找到指定的AAD管理组 $MGMT_GROUP_NAME" exit 1 fi # 循环处理每个服务主体 for SP_NAME in "${SP_NAMES[@]}" do # 获取服务主体的Object ID SP_ID=$(az ad sp list --display-name "$SP_NAME" --query [0].id -o tsv) if [ -z "$SP_ID" ]; then echo "跳过:未找到服务主体 $SP_NAME" continue fi # 执行添加操作 az ad group member add --group "$MGMT_GROUP_ID" --member-id "$SP_ID" # 输出结果提示 if [ $? -eq 0 ]; then echo "成功:服务主体 $SP_NAME 已加入管理组 $MGMT_GROUP_NAME" else echo "失败:无法添加服务主体 $SP_NAME 到管理组" fi done
关键说明
- 管理组ID获取:Azure AD组的操作依赖Object ID而非显示名称,因此必须先通过
az ad group show获取ID - 服务主体匹配:
az ad sp list通过显示名称查询,若存在同名SP会取第一个结果,确保服务主体名称唯一 - 错误处理:脚本加入了空值检查和命令执行状态判断,避免因单个SP异常导致整个脚本中断
内容的提问来源于stack exchange,提问作者emran hossain
相关产品推荐
相关产品推荐

