如何用PowerShell AZ仅修改Azure负载均衡器规则的BackendAddressPool
实现方法
是有的,不需要手动传入所有规则配置参数,直接操作内存中存储的负载均衡器规则对象属性,再统一推送更新即可,操作步骤如下:
- 首先获取目标负载均衡器实例
$slb = Get-AzLoadBalancer -Name <你的负载均衡器名称> -ResourceGroupName <资源组名称>
- 获取需要修改的负载均衡规则、以及要替换的新后端地址池对象
# 筛选目标规则 $targetRule = $slb.LoadBalancingRules | Where-Object {$_.Name -eq "<待修改的规则名称>"} # 筛选新的后端地址池,如果BAP不在当前负载均衡器下,调整获取逻辑即可 $newBackendPool = $slb.BackendAddressPools | Where-Object {$_.Name -eq "<新后端地址池名称>"}
- 直接修改规则对象的BackendAddressPool属性
$targetRule.BackendAddressPool = $newBackendPool
- 将本地修改后的负载均衡器配置推送至Azure生效
Set-AzLoadBalancer -LoadBalancer $slb
批量修改适配
你之前的批量遍历逻辑可以直接复用,不需要调用Set-AzLoadBalancerRuleConfig传全量参数,调整为修改属性后统一推送即可,示例如下:
# 先提前获取负载均衡器、新BAP对象 $slb = Get-AzLoadBalancer -Name <你的负载均衡器名称> -ResourceGroupName <资源组名称> $BAP = $slb.BackendAddressPools | Where-Object {$_.Name -eq "<新后端地址池名称>"} ForEach($Rule in $BAPFrom.LoadBalancingRules){ $LbRule = $slb.LoadBalancingRules | Where-Object {$_.Id -eq $Rule.Id} # 直接修改属性即可 $LbRule.BackendAddressPool = $BAP } # 统一推送更新 Set-AzLoadBalancer -LoadBalancer $slb
内容的提问来源于stack exchange,提问作者Jeffrey
相关产品推荐
相关产品推荐

