2016-11-17 80 views
-2

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

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

我接近这个错误吗?这是一个错误吗?我使用的命令是否错误?

错误文本是“Set-AzureRmTrafficManagerProfile:BadRequest:端点优先级设置不正确,优先级必须在全部端点上设置,或者不在端点上设置。

此代码:

$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 

回答

0

你的代码是工作的方式和$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 
} 
+0

感谢您的回复。尽管如此,这还是很重要的一点。我只能在这里做,因为它是示例代码。在应用程序中,我不会知道配置文件中第一个端点的任何细节,因此无法再次删除并添加它。把第二个例子看作两个独立的脚本,它们需要几小时或几天的时间(一个站点的不同部署)。我刚刚发现还有一个新的trafficmanagerendpoint命令,所以我给了一个旋风,但我仍然不明白为什么上述不起作用。 –

+0

我也找不到第一个端点的详细信息,因为get命令只返回一个端点,您必须命名它才能恢复。非常奇怪的命令! –

+0

在第二个例子中,抛出的异常在哪里,它是否给你抛出异常的PS行?我会说,你需要在不同的会话中运行它们来尝试模拟你试图达到的目标。因此,添加第一个端点,然后在新的PS Session中添加第二个端点。 'Get-AzureRmTrafficManagerProfile'返回我在测试中配置的两个端点。 –

相关问题