使用 Powershell AZ 更改 Azure 负载均衡器规则上的 BackendAppressPool

Change BackendAppressPool on Azure Load Balancer Rule using Powershell AZ

我正在尝试根据预先存在的负载均衡器规则更改后端地址池。

我研究过使用 Set-AzLoadBalancerRuleConfig,但看来我需要提供所有信息才能重建规则...即:FrontendIpConfiguration、协议、 FrontendPort、BackendPort 和 Probe,以及要使用的新 BackendAddressPool:

ForEach($Rule in $BAPFrom.LoadBalancingRules){

$LbRule = $slb.LoadBalancingRules | Where-Object {$_.Id -eq $Rule.Id}

$slb | Set-AzLoadBalancerRuleConfig -Name $LbRule.Name `
            -FrontendIPConfiguration $slb.FrontendIpConfigurations[0] `
            -Protocol $LbRule.Protocol `
            -FrontendPort $LbRule.FrontendPort `
            -BackendPort $LbRule.BackendPort `
            -BackendAddressPool $BAP #`
            #-Probe $LbRule.Probe}

有没有办法只根据预先存在的规则更改 BackendAddressPool,而无需再次传入这些参数中的每一个?

如评论中所述,您尝试实施的过程是不可能的。

我在我的环境中进行了同样的测试:

场景: 1 个负载均衡器,1 个负载均衡规则和 2 个后端池。

我在规则中的默认池是 loadbalancerbackendpool,如下所示:

我尝试将其更改为第二个池,即 Loadbalancerbackenpooloutbound。它成功了,但如果您看到输出,只有后端池 ID 是正确的,其他已更改为默认值,与我之前的不同规则如下所示。

解决方案:唯一可用的解决方案是获取要更新的规则配置,并在更新规则时提供从获取规则操作中收集的参数,例如下面:

$slb = Get-AzLoadBalancer -Name "ansumantest-lb" -ResourceGroupName "resourcegroup"
$MyBackendPool2 = $slb | Get-AzLoadBalancerBackendAddressPool -Name 'LoadBalancerBackEndPoolOutbound'
$rule=Get-AzLoadBalancerRuleConfig -LoadBalancer $slb -Name 'myHTTPRule'
$slb|Set-AzLoadBalancerRuleConfig -Name $rule.Name -BackendAddressPool $MyBackendPool2 -Protocol $rule.Protocol -FrontendPort $rule.FrontendPort -BackendPort $rule.BackendPort