通过 PowerShell 添加新的流量管理器配置文件

Add a new Traffic Manager profile through PowerShell

我正在尝试将新的流量管理器端点添加到 powershell 脚本中的现有配置文件,作为部署管道的一部分。 在 Azure 门户中,我可以简单地添加第二个端点并分配新的优先级。由于我使用的是加权策略,因此优先级对我来说毫无意义,所以我不在乎它是什么。我不想给它设置一个随机数,因为那样仍然会导致作业失败。

文档声称应该为新端点自动分配一个新值,但这仅在我先删除所有现有端点然后将它们全部重新添加时才有效。因为 get-AzureRMTrafficManagerEndPoint cmdlet 需要端点名称(不是可选的) 而且我不知道所有的端点名称我无法删除并重新添加它们。

我是不是处理错了?这是一个错误吗?我是不是用错了命令?

错误文本是"Set-AzureRmTrafficManagerProfile : BadRequest: The endpoint priorities are not set correctly. The priorities must be set on all or none of the endpoints."

此代码有效:

$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App1RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App1" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App2RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App2" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile

此代码失败:

   $TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
    $publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App1RGName"
    Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App1" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
    Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile
    $TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
    $publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App2RGName"
    Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App2" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
    Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile

您的代码的工作方式和 $TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName" 的额外行导致此失败。

您正在为一个终结点向流量管理器配置文件添加配置,然后尝试对其进行设置。您需要修改您的代码,使其与您的第一个示例相同,不同之处在于您获取流量管理器配置文件,添加端点,然后调用 Set-AzureRmTrafficManagerProfile 一次,而不是第二个示例中的两次。

编辑:添加一些代码以获取配置文件中的端点。

$Profiles = Get-AzureRmTrafficManagerProfile -Name mctmp -ResourceGroupName TM

foreach ($Profile in $Profiles.Endpoints.Name) {
    Get-AzureRmTrafficManagerEndpoint -Name $Profile -ProfileName $Profiles.RelativeDnsName -ResourceGroupName TM -Type ExternalEndpoints
}