TrafficManagerEndpoint cmdlet:获取错误请求(400)和NullReferenceExceptions

时间:2017-05-15 18:31:03

标签: azure azure-powershell azure-traffic-manager

我正在尝试通过Powershell启用/禁用Traffic Manager端点以帮助进行环境配置。在我们的一个资源组中,cmdlet工作正常,但我们在其他人看到了一些奇怪的行为。

在一种情况下,将TrafficManagerEndpoint直接传递给cmdlet(通过管道或参数)会返回400并呕吐完整的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

使用Enable-AzureRmTrafficManagerEndpointSet-AzureRmTrafficManagerEndpoint时会发生同样的情况。

使用资源名称调用cmdlet时,Diable-AzureRmTrafficManagerEndpoint工作得很好,但是当以这种方式调用Enable-AzureRmTrafficManagerEndpoint时,我得到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

我确定名字是正确的。对此有何见解?看起来我的AzureRM.TrafficManager模块与Azure不同步,但我已经尝试安装Web平台安装程序中可用的任何内容并且没有任何地方。 (模块版本是3.0.0)。谢谢!

编辑:我忘了更多信息:

.NET Azure SDK版本:2.9

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

1 个答案:

答案 0 :(得分:1)

根据您的描述,我们可以像这样使用Azure PowerShell脚本来启用或禁用流量管理器端点。

使用此脚本禁用 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     :

使用此脚本启用 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     :

顺便说一句,我使用的是Azure PowerShell版本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...}