Reputation: 68
I'm attempting to enable/disable Traffic Manager endpoints via Powershell to help with environment configuration. On one of our Resource Groups the cmdlets worked fine, but we're seeing some strange behavior in others.
In one case, passing in a TrafficManagerEndpoint
directly to a cmdlet (via pipeline or parameter) returns a 400 and vomits the full HTML:
> $tm = Get-AzureRmTrafficManagerProfile -Name <tm-name> -ResourceGroupname <rg-name>
> $tm.Endpoints[0] | Disable-AzureRmTrafficManagerEndpoint
Confirm
Are you sure you want to disable endpoint '<tm-endpoint-name>' of Profile '<tm-name>'?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y
Disable-AzureRmTrafficManagerEndpoint : <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Request Error</title>
<style>BODY { color: #000000; background-color: white; font-family: Verdana; margin-left: 0px; margin-top: 0px; } #content { margin-left: 30px; font-size: .70em; padding-bottom: 2em; } A:link { color: #336699;
font-weight: bold; text-decoration: underline; } A:visited { color: #6699cc; font-weight: bold; text-decoration: underline; } A:active { color: #336699; font-weight: bold; text-decoration: underline; } .heading1 {
background-color: #003366; border-bottom: #336699 6px solid; color: #ffffff; font-family: Tahoma; font-size: 26px; font-weight: normal;margin: 0em 0em 10px -20px; padding-bottom: 8px; padding-left:
30px;padding-top: 16px;} pre { font-size:small; background-color: #e5e5cc; padding: 5px; font-family: Courier New; margin-top: 0px; border: 1px #f0f0e0 solid; white-space: pre-wrap; white-space: -pre-wrap;
word-wrap: break-word; } table { border-collapse: collapse; border-spacing: 0px; font-family: Verdana;} table th { border-right: 2px white solid; border-bottom: 2px white solid; font-weight: bold;
background-color: #cecf9c;} table td { border-right: 2px white solid; border-bottom: 2px white solid; background-color: #e5e5cc;}</style>
</head>
<body>
<div id="content">
<p class="heading1">Request Error</p>
<p>The server encountered an error processing the request. See server logs for more details.</p>
</div>
</body>
</html>
At line:1 char:20
+ $tm.Endpoints[0] | Disable-AzureRmTrafficManagerEndpoint
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Disable-AzureRmTrafficManagerEndpoint], CloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.TrafficManager.DisableAzureTrafficManagerEndpoint
The same happens when using Enable-AzureRmTrafficManagerEndpoint
and Set-AzureRmTrafficManagerEndpoint
.
When invoking the cmdlet using resource names, Diable-AzureRmTrafficManagerEndpoint
works just fine, but when invoking Enable-AzureRmTrafficManagerEndpoint
this way I get a NullReferenceException
:
> Disable-AzureRmTrafficManagerEndpoint -Name <tm-endpoint-name> -ProfileName <tm-name> -ResourceGroupName <rg-name> -Type AzureEndpoints
Confirm
Are you sure you want to disable endpoint '<tm-endpoint-name>' of Profile '<tm-name>'?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y
False
> Enable-AzureRmTrafficManagerEndpoint -Name <tm-endpoint-name> -ProfileName <tm-name> -ResourceGroup <rg-name> -Type AzureEndpoints
Enable-AzureRmTrafficManagerEndpoint : Object reference not set to an instance of an object.
At line:1 char:1
+ Enable-AzureRmTrafficManagerEndpoint -Name $tmEndpoint.Name -ProfileN ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Enable-AzureRmTrafficManagerEndpoint], NullReferenceException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.TrafficManager.EnableAzureTrafficManagerEndpoint
I'm certain the names are correct. Any insight into this? It seems like my AzureRM.TrafficManager module is out of sync with Azure, but I've tried installing whatever's available in the Web Platform Installer and haven't gotten anywhere. (Module version is 3.0.0). Thanks!
EDIT: Some more info that I forgot:
.NET Azure SDK version: 2.9
Powershell version:
Name Value
---- -----
PSVersion 5.1.14393.953
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.953
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Upvotes: 0
Views: 303
Reputation: 13974
According to your description, we can use Azure PowerShell script like this to enable or disable traffic manager endpoints.
Use this script to disable Azure traffic manager endpoints:
PS C:\Users> $endpoint1 = Get-AzureRmTrafficManagerEndpoint -Name web1 -Type AzureEndpoints -ProfileName jasontm -ResourceGroupName jason
PS C:\Users> $endpoint1.EndpointStatus
Enabled
PS C:\Users> $endpoint1.EndpointStatus = "Disabled"
PS C:\Users> $endpoint1.EndpointStatus
Disabled
PS C:\Users> $endpoint1 | Set-AzureRmTrafficManagerEndpoint
Id : /subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/jason/providers/Microsoft.Network/trafficManagerProfiles/jasontm/azureEndpoints/web1
Name : web1
ProfileName : jasontm
ResourceGroupName : jason
Type : AzureEndpoints
TargetResourceId : /subscriptions/5384xxxx-xxxx-xxx-xxxx-xxxxe29axxxx/resourceGroups/jason/providers/Microsoft.Network/publicIPAddresses/jasonweb1-ip
Target : jasonweb1.eastus.cloudapp.azure.com
EndpointStatus : Disabled
Weight : 1
Priority : 1
Location : East US
EndpointMonitorStatus : Disabled
MinChildEndpoints :
Use this script to enable Azure traffic manager endpoints:
PS C:\Users> $endpoint1 = Get-AzureRmTrafficManagerEndpoint -Name web1 -Type AzureEndpoints -ProfileName jasontm -ResourceGroupName jason
PS C:\Users> $endpoint1.EndpointStatus
Disabled
PS C:\Users> $endpoint1.EndpointStatus = "Enabled"
PS C:\Users> $endpoint1.EndpointStatus
Enabled
PS C:\Users> $endpoint1 | Set-AzureRmTrafficManagerEndpoint
Id : /subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/jason/providers/Microsoft.Network/trafficManagerProfiles/jasontm/azureEndpoints/web1
Name : web1
ProfileName : jasontm
ResourceGroupName : jason
Type : AzureEndpoints
TargetResourceId : /subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/jason/providers/Microsoft.Network/publicIPAddresses/jasonweb1-ip
Target : jasonweb1.eastus.cloudapp.azure.com
EndpointStatus : Enabled
Weight : 1
Priority : 1
Location : East US
EndpointMonitorStatus : CheckingEndpoint
MinChildEndpoints :
By the way, I am use Azure PowerShell version 3.7.0:
PS C:\Users> Get-Module -ListAvailable -Name Azure -Refresh
Directory: C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 3.7.0 Azure {Get-AzureAutomationCertificate, Get-AzureAutomationConnection, New-AzureAutomationConnection, Remove-AzureAutomationConnection...}
Upvotes: 1