2017-05-15 1 views
0

Je tente d'activer/désactiver les noeuds finaux Traffic Manager via Powershell pour faciliter la configuration de l'environnement. Sur l'un de nos groupes de ressources, les cmdlets ont bien fonctionné, mais nous observons un comportement étrange chez les autres.Applets de commande TrafficManagerEndpoint: obtention d'une demande erronée (400) et NullReferenceExceptions

Dans un cas, le passage dans un TrafficManagerEndpoint directement à un applet de commande (via pipeline ou d'un paramètre) renvoie un 400 et vomit la pleine 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 

La même chose se produit lors de l'utilisation Enable-AzureRmTrafficManagerEndpoint et Set-AzureRmTrafficManagerEndpoint.

Lorsque vous appelez l'applet de commande en utilisant des noms de ressources, Diable-AzureRmTrafficManagerEndpoint fonctionne très bien, mais lors de l'appel Enable-AzureRmTrafficManagerEndpoint cette façon je reçois un 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 

Je suis certain que les noms sont corrects. Un aperçu de cela? Il semble que mon module AzureRM.TrafficManager n'est pas synchronisé avec Azure, mais j'ai essayé d'installer tout ce qui est disponible dans le programme d'installation de la plateforme Web et je n'ai obtenu aucun résultat. (La version du module est 3.0.0). Merci!

EDIT: Un peu plus d'informations que j'ai oublié:

Azure .NET SDK version: 2.9

Version Powershell:

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 

Répondre

1

Selon votre description, nous pouvons utiliser Azure PowerShell script comme ceci pour activer ou désactiver les points de terminaison du gestionnaire de trafic.

Utilisez ce script pour désactiver points d'extrémité du gestionnaire de trafic Azure:

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  : 

Utilisez ce script pour permettent points d'extrémité de gestionnaire de trafic Azure:

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  : 

Soit dit en passant, je suis Azure utilisation 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...} 
+0

Merci pour votre réponse! Je ne sais pas pourquoi je n'ai pas été informé que vous avez répondu. J'ai essayé la commande Set- * plus tôt et obtenait également l'erreur 400, mais pour une raison quelconque cela fonctionne maintenant! – mrshanahan