Skip to content

Commit 12cef92

Browse files
authored
Merge pull request Azure#9267 from ninweninwe/network-april-02
VpnGateway Feature: Get-AzVirtualNetworkGatewayVpnclientConnectionHealth
2 parents a77ac85 + 4ba152f commit 12cef92

File tree

12 files changed

+10226
-5
lines changed

12 files changed

+10226
-5
lines changed

src/Network/Network.Test/ScenarioTests/VirtualNetworkGatewayTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,5 +107,13 @@ public void VirtualNetworkGatewayVpnCustomIpsecPolicySetTest()
107107
{
108108
TestRunner.RunTestScript("Test-VirtualNetworkGatewayVpnCustomIpsecPolicySet");
109109
}
110+
111+
[Fact]
112+
[Trait(Category.AcceptanceType, Category.CheckIn)]
113+
[Trait(Category.Owner, NrpTeamAlias.brooklynft_subset3)]
114+
public void VirtualNetworkGatewayVpnclientConnectionHealthTest()
115+
{
116+
TestRunner.RunTestScript("Test-VirtualNetworkGatewayVpnClientConnectionHealth");
117+
}
110118
}
111119
}

src/Network/Network.Test/ScenarioTests/VirtualNetworkGatewayTests.ps1

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,7 @@ Virtual network gateway tests
694694
#>
695695
function Test-VirtualNetworkGatewayVpnCustomIpsecPolicySet
696696
{
697-
param
697+
param
698698
(
699699
$basedir = ".\"
700700
)
@@ -802,3 +802,65 @@ param
802802
Clean-ResourceGroup $rgname
803803
}
804804
}
805+
806+
<#
807+
.SYNOPSIS
808+
Virtual network gateway Vpn Client Connection Health
809+
#>
810+
function Test-VirtualNetworkGatewayVpnClientConnectionHealth
811+
{
812+
param
813+
(
814+
$basedir = ".\"
815+
)
816+
817+
# Setup
818+
$rgname = Get-ResourceGroupName
819+
$rname = Get-ResourceName
820+
$domainNameLabel = Get-ResourceName
821+
$vnetName = Get-ResourceName
822+
$publicIpName = Get-ResourceName
823+
$vnetGatewayConfigName = Get-ResourceName
824+
$rglocation = Get-ProviderLocation ResourceManagement
825+
$resourceTypeParent = "Microsoft.Network/virtualNetworkGateways"
826+
$location = Get-ProviderLocation $resourceTypeParent
827+
828+
try
829+
{
830+
# Create the resource group
831+
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $rglocation -Tags @{ testtag = "testval" }
832+
833+
# create the client root cert
834+
$clientRootCertName = "BrkLiteTestMSFTRootCA.cer"
835+
#[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine")]
836+
$samplePublicCertData = "MIIDUzCCAj+gAwIBAgIQRggGmrpGj4pCblTanQRNUjAJBgUrDgMCHQUAMDQxEjAQBgNVBAoTCU1pY3Jvc29mdDEeMBwGA1UEAxMVQnJrIExpdGUgVGVzdCBSb290IENBMB4XDTEzMDExOTAwMjQxOFoXDTIxMDExOTAwMjQxN1owNDESMBAGA1UEChMJTWljcm9zb2Z0MR4wHAYDVQQDExVCcmsgTGl0ZSBUZXN0IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7SmE+iPULK0Rs7mQBO/6a6B6/G9BaMxHgDGzAmSG0Qsyt5e08aqgFnPdkMl3zRJw3lPKGha/JCvHRNrO8UpeAfc4IXWaqxx2iBipHjwmHPHh7+VB8lU0EJcUe7WBAI2n/sgfCwc+xKtuyRVlOhT6qw/nAi8e5don/iHPU6q7GCcnqoqtceQ/pJ8m66cvAnxwJlBFOTninhb2VjtvOfMQ07zPP+ZuYDPxvX5v3nd6yDa98yW4dZPuiGO2s6zJAfOPT2BrtyvLekItnSgAw3U5C0bOb+8XVKaDZQXbGEtOw6NZvD4L2yLd47nGkN2QXloiPLGyetrj3Z2pZYcrZBo8hAgMBAAGjaTBnMGUGA1UdAQReMFyAEOncRAPNcvJDoe4WP/gH2U+hNjA0MRIwEAYDVQQKEwlNaWNyb3NvZnQxHjAcBgNVBAMTFUJyayBMaXRlIFRlc3QgUm9vdCBDQYIQRggGmrpGj4pCblTanQRNUjAJBgUrDgMCHQUAA4IBAQCGyHhMdygS0g2tEUtRT4KFM+qqUY5HBpbIXNAav1a1dmXpHQCziuuxxzu3iq4XwnWUF1OabdDE2cpxNDOWxSsIxfEBf9ifaoz/O1ToJ0K757q2Rm2NWqQ7bNN8ArhvkNWa95S9gk9ZHZLUcjqanf0F8taJCYgzcbUSp+VBe9DcN89sJpYvfiBiAsMVqGPc/fHJgTScK+8QYrTRMubtFmXHbzBSO/KTAP5rBTxse88EGjK5F8wcedvge2Ksk6XjL3sZ19+Oj8KTQ72wihN900p1WQldHrrnbixSpmHBXbHr9U0NQigrJp5NphfuU5j81C8ixvfUdwyLmTv7rNA7GTAD";
837+
$rootCert = New-AzVpnClientRootCertificate -Name $clientRootCertName -PublicCertData $samplePublicCertData
838+
839+
# Create the Virtual Network
840+
$subnet = New-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -AddressPrefix 10.0.0.0/24
841+
$vnet = New-AzvirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $subnet
842+
$vnet = Get-AzvirtualNetwork -Name $vnetName -ResourceGroupName $rgname
843+
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
844+
845+
# Create the IP config
846+
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel
847+
$vnetIpConfig = New-AzVirtualNetworkGatewayIpConfig -Name $vnetGatewayConfigName -PublicIpAddress $publicip -Subnet $subnet
848+
849+
# Create & Get P2S virtualnetworkgateway
850+
New-AzVirtualNetworkGateway -ResourceGroupName $rgname -name $rname -location $location -IpConfigurations $vnetIpConfig -GatewayType Vpn -VpnType RouteBased -EnableBgp $false -GatewaySku VpnGw1 -VpnClientAddressPool 201.169.0.0/16 -VpnClientRootCertificates $rootCert
851+
$actual = Get-AzVirtualNetworkGateway -ResourceGroupName $rgname -name $rname
852+
Assert-AreEqual "VpnGw1" $actual.Sku.Tier
853+
$protocols = $actual.VpnClientConfiguration.VpnClientProtocols
854+
Assert-AreEqual 2 @($protocols).Count
855+
Assert-AreEqual "201.169.0.0/16" $actual.VpnClientConfiguration.VpnClientAddressPool.AddressPrefixes
856+
857+
$vpnclientHealthDetails = Get-AzVirtualNetworkGatewayVpnClientConnectionHealth -ResourceGroupName $rgname -ResourceName $rname
858+
Assert-AreEqual 0 @($vpnclientHealthDetails).Count
859+
}
860+
finally
861+
{
862+
# Cleanup
863+
Clean-ResourceGroup $rgname
864+
}
865+
}
866+

src/Network/Network.Test/SessionRecords/Commands.Network.Test.ScenarioTests.VirtualNetworkGatewayTests/VirtualNetworkGatewayVpnclientConnectionHealthTest.json

Lines changed: 9758 additions & 0 deletions
Large diffs are not rendered by default.

src/Network/Network.sln

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Microsoft Visual Studio Solution File, Format Version 12.00
2-
# Visual Studio 15
3-
VisualStudioVersion = 15.0.27703.2042
2+
# Visual Studio Version 16
3+
VisualStudioVersion = 16.0.28803.352
44
MinimumVisualStudioVersion = 10.0.40219.1
5-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Network", "Network\Network.csproj", "{98CFD96B-A6BC-4F15-AE2C-603FC2B58981}"
6-
EndProject
75
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{95C16AED-FD57-42A0-86C3-2CF4300A4817}"
86
EndProject
7+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Network", "Network\Network.csproj", "{98CFD96B-A6BC-4F15-AE2C-603FC2B58981}"
8+
EndProject
99
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Network.Test", "Network.Test\Network.Test.csproj", "{A2DF4FE5-46EE-43E2-B246-E5CDDD47B752}"
1010
EndProject
1111
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Accounts", "..\Accounts\Accounts\Accounts.csproj", "{142D7B0B-388A-4CEB-A228-7F6D423C5C2E}"

src/Network/Network/Az.Network.psd1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ CmdletsToExport = 'Add-AzApplicationGatewayAuthenticationCertificate',
258258
'New-AzRouteConfig', 'Remove-AzRouteConfig', 'Set-AzRouteConfig',
259259
'Set-AzRouteTable', 'Set-AzVirtualNetworkGateway',
260260
'Get-AzVirtualNetworkGateway', 'New-AzVirtualNetworkGateway',
261+
'Get-AzVirtualNetworkGatewayVpnclientConnectionHealth',
261262
'Get-AzVpnClientRootCertificate',
262263
'Get-AzVpnClientRevokedCertificate',
263264
'Add-AzVpnClientRootCertificate',

src/Network/Network/ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
- Additional information about change #1
1919
--->
2020
## Upcoming Release
21+
* Add support for Virtual Network Gateway Resource
22+
- New cmdlets
23+
- Get-AzVirtualNetworkGatewayVpnClientConnectionHealth
2124
* Add AvailablePrivateEndpointType
2225
- New cmdlets
2326
- Get-AzAvailablePrivateEndpointType

src/Network/Network/Common/NetworkResourceManagerProfile.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,7 @@ private static void Initialize()
711711
cfg.CreateMap<CNM.PSBgpSettings, MNM.BgpSettings>();
712712
cfg.CreateMap<CNM.PSBGPPeerStatus, MNM.BgpPeerStatus>();
713713
cfg.CreateMap<CNM.PSGatewayRoute, MNM.GatewayRoute>();
714+
cfg.CreateMap<CNM.PSVpnClientConnectionHealthDetail, MNM.VpnClientConnectionHealthDetail>();
714715

715716
// MNM to CNM
716717
cfg.CreateMap<MNM.VirtualNetworkGateway, CNM.PSVirtualNetworkGateway>();
@@ -730,6 +731,7 @@ private static void Initialize()
730731
cfg.CreateMap<MNM.BgpSettings, CNM.PSBgpSettings>();
731732
cfg.CreateMap<MNM.BgpPeerStatus, CNM.PSBGPPeerStatus>();
732733
cfg.CreateMap<MNM.GatewayRoute, CNM.PSGatewayRoute>();
734+
cfg.CreateMap<MNM.VpnClientConnectionHealthDetail, CNM.PSVpnClientConnectionHealthDetail>();
733735

734736
// Application Gateways
735737
// CNM to MNM
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Microsoft.WindowsAzure.Commands.Common.Attributes;
2+
3+
namespace Microsoft.Azure.Commands.Network.Models
4+
{
5+
public partial class PSVpnClientConnectionHealthDetail
6+
{
7+
[Ps1Xml(Label = "VpnConnectionId", Target = ViewControl.Table)]
8+
public string VpnConnectionId { get; set; }
9+
[Ps1Xml(Label = "VpnConnectionDurationInSeconds", Target = ViewControl.Table)]
10+
public long? VpnConnectionDuration { get; set; }
11+
[Ps1Xml(Label = "VpnConnectionTime", Target = ViewControl.Table)]
12+
public string VpnConnectionTime { get; set; }
13+
[Ps1Xml(Label = "PublicIpAddress", Target = ViewControl.Table)]
14+
public string PublicIpAddress { get; set; }
15+
[Ps1Xml(Label = "PrivateIpAddress", Target = ViewControl.Table)]
16+
public string PrivateIpAddress { get; set; }
17+
[Ps1Xml(Label = "VpnUserName", Target = ViewControl.Table)]
18+
public string VpnUserName { get; set; }
19+
[Ps1Xml(Label = "MaxBandwidth", Target = ViewControl.Table)]
20+
public long? MaxBandwidth { get; set; }
21+
[Ps1Xml(Label = "EgressPacketsTransferred", Target = ViewControl.Table)]
22+
public long? EgressPacketsTransferred { get; set; }
23+
[Ps1Xml(Label = "EgressBytesTransferred", Target = ViewControl.Table)]
24+
public long? EgressBytesTransferred { get; set; }
25+
[Ps1Xml(Label = "IngressPacketsTransferred", Target = ViewControl.Table)]
26+
public long? IngressPacketsTransferred { get; set; }
27+
[Ps1Xml(Label = "IngressBytesTransferred", Target = ViewControl.Table)]
28+
public long? IngressBytesTransferred { get; set; }
29+
[Ps1Xml(Label = "MaxPacketsPerSecond", Target = ViewControl.Table)]
30+
public long? MaxPacketsPerSecond { get; set; }
31+
}
32+
}

src/Network/Network/Network.format.ps1xml

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,118 @@
647647
</ListEntries>
648648
</ListControl>
649649
</View>
650+
<View>
651+
<Name>Microsoft.Azure.Commands.Network.Models.PSVpnClientConnectionHealthDetail</Name>
652+
<ViewSelectedBy>
653+
<TypeName>Microsoft.Azure.Commands.Network.Models.PSVpnClientConnectionHealthDetail</TypeName>
654+
</ViewSelectedBy>
655+
<TableControl>
656+
<TableHeaders>
657+
<TableColumnHeader>
658+
<Alignment>Left</Alignment>
659+
<Label>VpnConnectionId</Label>
660+
</TableColumnHeader>
661+
<TableColumnHeader>
662+
<Alignment>Left</Alignment>
663+
<Label>VpnConnectionDurationInSeconds</Label>
664+
</TableColumnHeader>
665+
<TableColumnHeader>
666+
<Alignment>Left</Alignment>
667+
<Label>VpnConnectionTime</Label>
668+
</TableColumnHeader>
669+
<TableColumnHeader>
670+
<Alignment>Left</Alignment>
671+
<Label>PublicIpAddress</Label>
672+
</TableColumnHeader>
673+
<TableColumnHeader>
674+
<Alignment>Left</Alignment>
675+
<Label>PrivateIpAddress</Label>
676+
</TableColumnHeader>
677+
<TableColumnHeader>
678+
<Alignment>Left</Alignment>
679+
<Label>VpnUserName</Label>
680+
</TableColumnHeader>
681+
<TableColumnHeader>
682+
<Alignment>Left</Alignment>
683+
<Label>MaxBandwidth</Label>
684+
</TableColumnHeader>
685+
<TableColumnHeader>
686+
<Alignment>Left</Alignment>
687+
<Label>EgressPacketsTransferred</Label>
688+
</TableColumnHeader>
689+
<TableColumnHeader>
690+
<Alignment>Left</Alignment>
691+
<Label>EgressBytesTransferred</Label>
692+
</TableColumnHeader>
693+
<TableColumnHeader>
694+
<Alignment>Left</Alignment>
695+
<Label>IngressPacketsTransferred</Label>
696+
</TableColumnHeader>
697+
<TableColumnHeader>
698+
<Alignment>Left</Alignment>
699+
<Label>IngressBytesTransferred</Label>
700+
</TableColumnHeader>
701+
<TableColumnHeader>
702+
<Alignment>Left</Alignment>
703+
<Label>MaxPacketsPerSecond</Label>
704+
</TableColumnHeader>
705+
</TableHeaders>
706+
<TableRowEntries>
707+
<TableRowEntry>
708+
<TableColumnItems>
709+
<TableColumnItem>
710+
<Alignment>Left</Alignment>
711+
<PropertyName>VpnConnectionId</PropertyName>
712+
</TableColumnItem>
713+
<TableColumnItem>
714+
<Alignment>Left</Alignment>
715+
<PropertyName>VpnConnectionDuration</PropertyName>
716+
</TableColumnItem>
717+
<TableColumnItem>
718+
<Alignment>Left</Alignment>
719+
<PropertyName>VpnConnectionTime</PropertyName>
720+
</TableColumnItem>
721+
<TableColumnItem>
722+
<Alignment>Left</Alignment>
723+
<PropertyName>PublicIpAddress</PropertyName>
724+
</TableColumnItem>
725+
<TableColumnItem>
726+
<Alignment>Left</Alignment>
727+
<PropertyName>PrivateIpAddress</PropertyName>
728+
</TableColumnItem>
729+
<TableColumnItem>
730+
<Alignment>Left</Alignment>
731+
<PropertyName>VpnUserName</PropertyName>
732+
</TableColumnItem>
733+
<TableColumnItem>
734+
<Alignment>Left</Alignment>
735+
<PropertyName>MaxBandwidth</PropertyName>
736+
</TableColumnItem>
737+
<TableColumnItem>
738+
<Alignment>Left</Alignment>
739+
<PropertyName>EgressPacketsTransferred</PropertyName>
740+
</TableColumnItem>
741+
<TableColumnItem>
742+
<Alignment>Left</Alignment>
743+
<PropertyName>EgressBytesTransferred</PropertyName>
744+
</TableColumnItem>
745+
<TableColumnItem>
746+
<Alignment>Left</Alignment>
747+
<PropertyName>IngressPacketsTransferred</PropertyName>
748+
</TableColumnItem>
749+
<TableColumnItem>
750+
<Alignment>Left</Alignment>
751+
<PropertyName>IngressBytesTransferred</PropertyName>
752+
</TableColumnItem>
753+
<TableColumnItem>
754+
<Alignment>Left</Alignment>
755+
<PropertyName>MaxPacketsPerSecond</PropertyName>
756+
</TableColumnItem>
757+
</TableColumnItems>
758+
</TableRowEntry>
759+
</TableRowEntries>
760+
</TableControl>
761+
</View>
650762
<View>
651763
<Name>Microsoft.Azure.Commands.Network.Models.PSLocalNetworkGateway</Name>
652764
<ViewSelectedBy>
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
using Microsoft.Azure.Commands.Network.Models;
2+
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
3+
using Microsoft.Azure.Management.Internal.Resources.Utilities.Models;
4+
using Microsoft.Azure.Management.Network;
5+
using System;
6+
using System.Collections.Generic;
7+
using System.Management.Automation;
8+
9+
namespace Microsoft.Azure.Commands.Network.VirtualNetworkGateway
10+
{
11+
[Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "VirtualNetworkGatewayVpnClientConnectionHealth", DefaultParameterSetName = "ByFactoryName", SupportsShouldProcess = true), OutputType(typeof(PSVpnClientConnectionHealthDetail))]
12+
public class GetVpnclientConnectionHealthCommand : VirtualNetworkGatewayBaseCmdlet
13+
{
14+
[Alias("ResourceName")]
15+
[Parameter(
16+
Mandatory = true,
17+
ValueFromPipelineByPropertyName = true,
18+
ParameterSetName = ParameterSetNames.ByFactoryName,
19+
HelpMessage = "Virtual network gateway name")]
20+
[ResourceNameCompleter("Microsoft.Network/virtualNetworkGateways", "ResourceGroupName")]
21+
[ValidateNotNullOrEmpty]
22+
public virtual string VirtualNetworkGatewayName { get; set; }
23+
24+
[Alias("VirtualNetworkGatewayId")]
25+
[Parameter(
26+
Mandatory = false,
27+
ValueFromPipelineByPropertyName = true,
28+
ParameterSetName = ParameterSetNames.ByResourceId,
29+
HelpMessage = "The resource id of the virtual network gateway object")]
30+
public string ResourceId { get; set; }
31+
32+
[Alias("VirtualNetworkGateway")]
33+
[Parameter(
34+
Mandatory = false,
35+
ValueFromPipeline = true,
36+
ParameterSetName = ParameterSetNames.ByFactoryObject,
37+
HelpMessage = "The virtual network gateway object to update.")]
38+
public PSVirtualNetworkGateway InputObject { get; set; }
39+
40+
[Parameter(
41+
Mandatory = true,
42+
ValueFromPipelineByPropertyName = true,
43+
ParameterSetName = ParameterSetNames.ByFactoryName,
44+
HelpMessage = "Virtual network gateway resource group's name")]
45+
[ResourceGroupCompleter]
46+
[ValidateNotNullOrEmpty]
47+
public virtual string ResourceGroupName { get; set; }
48+
49+
[Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")]
50+
public SwitchParameter AsJob { get; set; }
51+
52+
public override void Execute()
53+
{
54+
if (ParameterSetName.Equals(ParameterSetNames.ByFactoryObject, StringComparison.OrdinalIgnoreCase))
55+
{
56+
VirtualNetworkGatewayName = InputObject.Name;
57+
ResourceGroupName = InputObject.ResourceGroupName;
58+
}
59+
else if (ParameterSetName.Equals(ParameterSetNames.ByResourceId, StringComparison.OrdinalIgnoreCase))
60+
{
61+
var parsedResourceId = new ResourceIdentifier(ResourceId);
62+
VirtualNetworkGatewayName = parsedResourceId.ResourceName;
63+
ResourceGroupName = parsedResourceId.ResourceGroupName;
64+
}
65+
66+
base.Execute();
67+
68+
if (!IsVirtualNetworkGatewayPresent(ResourceGroupName, VirtualNetworkGatewayName))
69+
{
70+
throw new ArgumentException(Microsoft.Azure.Commands.Network.Properties.Resources.ResourceNotFound);
71+
}
72+
73+
List<PSVpnClientConnectionHealthDetail> vpnclientConnectionHealths = new List<PSVpnClientConnectionHealthDetail>();
74+
foreach(var h in VirtualNetworkGatewayClient.GetVpnclientConnectionHealth(ResourceGroupName, VirtualNetworkGatewayName).Value)
75+
{
76+
vpnclientConnectionHealths.Add(NetworkResourceManagerProfile.Mapper.Map<PSVpnClientConnectionHealthDetail>(h));
77+
}
78+
WriteObject(vpnclientConnectionHealths, true);
79+
}
80+
}
81+
}

src/Network/Network/help/Az.Network.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,9 @@ Gets a virtual network tap
467467
### [Get-AzVirtualNetworkUsageList](Get-AzVirtualNetworkUsageList.md)
468468
Gets virtual network current usage.
469469

470+
### [Get-AzVirtualNetworkGatewayVpnClientConnectionHealth](Get-AzVirtualNetworkGatewayVpnClientConnectionHealth.md)
471+
Gets virtual network vpn client connection health for per vpn client connection.
472+
470473
### [Get-AzVirtualWan](Get-AzVirtualWan.md)
471474
Gets a Virtual WAN or all Virtual WANs in a resource group or subscription.
472475

0 commit comments

Comments
 (0)