Skip to content

Commit e5e44d3

Browse files
committed
Merge pull request Azure#1496 from DeepakRajendranMsft/FixRDPCmdlet
Fix RDP cmdlet
2 parents e7e841c + a4282d2 commit e5e44d3

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

src/ResourceManager/Compute/Commands.Compute/RemoteDesktop/GetAzureRemoteDesktopFileCommand.cs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ public SwitchParameter Launch
6969
set;
7070
}
7171

72+
const string PublicIPAddressResource = "publicIPAddresses";
73+
const string NetworkInterfaceResouce = "networkInterfaces";
74+
const string LoadBalancerResouce = "loadBalancers";
75+
7276
public override void ExecuteCmdlet()
7377
{
7478
base.ExecuteCmdlet();
@@ -85,21 +89,19 @@ public override void ExecuteCmdlet()
8589
// Get Azure VM
8690
var vmResponse = this.VirtualMachineClient.Get(this.ResourceGroupName, this.Name);
8791

92+
var nicId = vmResponse.VirtualMachine.NetworkProfile.NetworkInterfaces.First().ReferenceUri;
93+
8894
// Get the NIC
89-
var nicResourceGroupName =
90-
this.GetResourceGroupName(vmResponse.VirtualMachine.NetworkProfile.NetworkInterfaces.First().ReferenceUri);
95+
var nicResourceGroupName = this.GetResourceGroupName(nicId);
9196

92-
var nicName =
93-
this.GetResourceName(
94-
vmResponse.VirtualMachine.NetworkProfile.NetworkInterfaces.First().ReferenceUri, "networkInterfaces");
97+
var nicName = this.GetResourceName(nicId, NetworkInterfaceResouce);
9598

96-
var nic =
97-
this.NetworkClient.NetworkManagementClient.NetworkInterfaces.Get(nicResourceGroupName, nicName);
99+
var nic = this.NetworkClient.NetworkManagementClient.NetworkInterfaces.Get(nicResourceGroupName, nicName);
98100

99-
if (nic.IpConfigurations.First().PublicIPAddress != null && !string.IsNullOrEmpty(nic.IpConfigurations.First().Id))
101+
if (nic.IpConfigurations.First().PublicIPAddress != null && !string.IsNullOrEmpty(nic.IpConfigurations.First().PublicIPAddress.Id))
100102
{
101103
// Get PublicIPAddress resource if present
102-
address = this.GetAddressFromPublicIPResource(nic.IpConfigurations.First().Id);
104+
address = this.GetAddressFromPublicIPResource(nic.IpConfigurations.First().PublicIPAddress.Id);
103105
}
104106
else if (nic.IpConfigurations.First().LoadBalancerInboundNatRules.Any())
105107
{
@@ -108,7 +110,7 @@ public override void ExecuteCmdlet()
108110
// Get ipaddress and port from loadbalancer
109111
foreach (var nicRuleRef in nic.IpConfigurations.First().LoadBalancerInboundNatRules)
110112
{
111-
var lbName = this.GetResourceName(nicRuleRef.Id, "loadBalancers");
113+
var lbName = this.GetResourceName(nicRuleRef.Id, LoadBalancerResouce);
112114
var lbResourceGroupName = this.GetResourceGroupName(nicRuleRef.Id);
113115

114116
var loadbalancer =
@@ -200,10 +202,10 @@ public override void ExecuteCmdlet()
200202
private string GetAddressFromPublicIPResource(string resourceId)
201203
{
202204
string address = string.Empty;
203-
205+
204206
// Get IpAddress from public IPAddress resource
205207
var publicIPResourceGroupName = this.GetResourceGroupName(resourceId);
206-
var publicIPName = this.GetResourceName(resourceId, "publicIPAddresses");
208+
var publicIPName = this.GetResourceName(resourceId, PublicIPAddressResource);
207209

208210
var publicIp =
209211
this.NetworkClient.NetworkManagementClient.PublicIPAddresses.Get(
@@ -230,7 +232,16 @@ private string GetResourceGroupName(string resourceId)
230232

231233
private string GetResourceName(string resourceId, string resource)
232234
{
233-
return resourceId.Split('/')[8];
235+
int resourceTypeLocation = resourceId.IndexOf(resource, StringComparison.OrdinalIgnoreCase);
236+
237+
var resourceName = resourceId.Substring(resourceTypeLocation + resource.Length + 1);
238+
if (resourceName.Contains("/"))
239+
{
240+
int resourceNameEnd = resourceName.IndexOf("/");
241+
resourceName = resourceName.Substring(0, resourceNameEnd);
242+
}
243+
244+
return resourceName;
234245
}
235246
}
236247
}

0 commit comments

Comments
 (0)