资源组中存在资源

Existence of a resource within a resource group

如何检查资源组中是否存在快速路由。我有资源组列表,但并非所有资源组中都有快速路由。检查每个资源组内部是否有快速路由需要写什么条件

rgList ==> 特定订阅中所有资源组的列表

erList ==> 特定订阅中的所有快速路由列表

rgList="$(az group list --subscription "sub1" --query [].name --output tsv)"
erList="$(az network express-route list --subscription "sub1" --query [].name --output tsv)"
for i in $rgList; do
    if [[ $(az network express-route list -g "$i" --subscription "sub-network-central-services" --query "[].name | length(@))" > 0 ]]
    then
        for j in $erList; do
            hubname+="$(az network express-route auth list --circuit-name "$j" --resource-group "$i" --query [].authorizations[].name --output tsv)"
        done
    fi
done

我收到以下错误 bash:意外标记“完成”附近的语法错误

如上所述,是的,在我们的本地环境中测试时出现了一些语法错误,我们已经修复了这些错误并且我们也修改了上述脚本。

修改后的脚本将提取授权名称和 Express-route 电路名称。

如果想得到有express-route电路的资源组列表可以直接参考我的解决方案中的替代脚本

这是修改后的 Bash 脚本:

hubname=""
rglist=$(az group list --subscription "<subNameorSubId>" --query [].name --output tsv)
erList=$(az network express-route list --subscription "<subNameorSubId>" --query [].name --output tsv)
for i in $rglist;
do
if [[ $(az network express-route list -g $i --subscription "<subNameorSubId>" --query "[].name | length(@)") > 0 ]]
    then
        for j in $erList;
        do
             hubname+=$(az network express-route auth list --circuit-name $j --resource-group $i --query [].name --output tsv)
             echo $j,$hubname
        done
    fi
done

这里是示例输出截图以供参考:

或者,您可以使用下面的 bash 脚本,如果其中存在 express-route 电路,这将为您提供资源组列表。

替代脚本:

 rgList=$(az group list --subscription "<SubNameorSubId>" --query [].name --output tsv)
    for i in $rgList;do
        resourcelist=$(az resource list -g $i --query [].type -o tsv)
        for j in $resourcelist;do
            if [[ $j ==  "Microsoft.Network/expressRouteCircuits" ]]
            then
                echo $i
            fi
        done
    done

这里是示例输出以供参考: