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

请求修改Bash脚本:交互式添加Service Principal至AAD组

交互式AAD组添加Service Principal脚本修改方案

修改后的脚本

# 提示用户输入目标AAD组的ID或名称
read -p "请输入目标AAD组的ID或名称: " group_input

# 根据输入获取组的Object ID
groupId=$(az ad group show --group "$group_input" --query 'id' --output tsv)

if [ -z "$groupId" ]; then
    echo "未找到指定的AAD组,请检查输入后重试。"
    exit 1
fi

# 提示用户输入要添加的Service Principal的名称或ID(多个用空格分隔)
read -p "请输入要添加的Service Principal的名称或ID(多个用空格分隔): " -a sp_list

# 遍历处理每个Service Principal
for sp_input in "${sp_list[@]}"
do
    # 判断输入是否是UUID格式,是则直接作为Object ID,否则按名称查询
    if [[ "$sp_input" == *-*-*-*-* ]]; then
        spObjId="$sp_input"
        # 验证SP是否存在
        az ad sp show --id "$spObjId" --query 'id' --output tsv > /dev/null 2>&1
        if [ $? -ne 0 ]; then
            echo "未找到ID为 $sp_input 的Service Principal。"
            continue
        fi
        # 获取SP名称用于输出
        sp_name=$(az ad sp show --id "$spObjId" --query 'displayName' --output tsv)
    else
        sp_name="$sp_input"
        spObjId=$(az ad sp list --display-name "$sp_name" --query '[0].id' --output tsv)
        if [ -z "$spObjId" ]; then
            echo "未找到名称为 $sp_name 的Service Principal。"
            continue
        fi
    fi

    # 添加到AAD组
    az ad group member add --group "$groupId" --member-id "$spObjId"
    if [ $? -eq 0 ]; then
        echo "Service Principal 名称: $sp_name (Object ID: $spObjId) 已成功添加到AAD组。"
    else
        echo "添加Service Principal 名称: $sp_name (Object ID: $spObjId) 到AAD组失败。"
    fi
done

关键修改说明

  • 交互式输入:用read命令获取用户输入,支持一次性输入多个Service Principal(空格分隔)
  • 组ID自动转换:若输入的是组名称,自动调用Azure CLI命令获取对应Object ID,无需硬编码
  • SP输入兼容:同时支持输入SP的名称或Object ID,通过格式判断区分处理,并增加存在性验证
  • 错误提示优化:在组、SP不存在时给出明确提示,避免无效操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:38:17