Azure Logic Apps变量数组批量定时关闭VM失败求助
Logic App定时批量关闭VM执行异常问题解决
问题现象
创建Logic App定时关闭多台VM,已通过变量数组定义VM的名称和资源组信息,但执行时Deallocate操作失败,请求路径显示资源组和VM名称被整个JSON对象的URL编码字符串替代:
/subscriptions/05ca62a1-b441-4c33-839d-12bd2ef71641/resourcegroups/%7B%22vmName%22%3A%22Dev1%22%2C%22resourceGroup%22%3A%22rg1%22%7D/providers/Microsoft.Compute/virtualMachines/%7B%22vmName%22%3A%22Dev2%22%2C%22resourceGroup%22%3A%22rg2%22%7D/deallocate
问题原因
Deallocate操作未正确提取数组项中的单个属性值,而是直接引用了整个数组对象,导致请求路径参数错误。
解决步骤
- 添加For Each循环:在Logic App流程中添加「For each」操作,选择你定义的VM变量数组作为遍历对象。
- 在循环内配置Deallocate操作:将Azure VM的Deallocate操作嵌套在For Each循环内部。
- 正确引用属性值:
- 资源组名称字段:选择动态内容中当前循环项的
resourceGroup属性(表达式示例:item()?['resourceGroup']) - VM名称字段:选择动态内容中当前循环项的
vmName属性(表达式示例:item()?['vmName'])
- 资源组名称字段:选择动态内容中当前循环项的
- 验证变量数组格式:确保变量数组的JSON格式正确,示例如下:
[ {"vmName": "Dev1", "resourceGroup": "rg1"}, {"vmName": "Dev2", "resourceGroup": "rg2"} ] - 保存配置后重新测试执行。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

