使用 PowerShell 删除虚拟网络网关
可以使用多种不同的方法来删除 VPN 网关配置中的虚拟网络网关。
如果要删除所有信息并从头开始配置(例如,在测试环境中),可以删除资源组。 删除某个资源组时,会删除该组中的所有资源。 仅不想要保留资源组中的任何资源时,才建议使用此方法。 使用这种方法时,无法做到有选择性地删除一部分资源。
如果想要保留资源组中的某些资源,则删除虚拟网络网关的过程会略微复杂一些。 在删除虚拟网络网关之前,必须先删除任何依赖于该网关的资源。 遵循的步骤取决于创建的连接类型,以及每个连接的依赖资源。
删除站点到站点 VPN 网关
若要删除 S2S 配置中的虚拟网络网关,必须先删除与该网关相关的每个资源。 由于存在依赖关系,必须按特定的顺序删除资源。 在以下示例中,必须指定某些值,而其他值则是输出结果。 为方便演示,我们在示例中使用了以下特定值:
- VNet 名称:VNet1
- 资源组名称:TestRG1
- 虚拟网关名称: VNet1GW
单击要删除的虚拟网络网关。
$GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
检查该虚拟网络网关是否已建立任何连接。
get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id} $Conns=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
删除所有连接。 系统可能会提示确认是否要删除每个连接。
$Conns | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
删除虚拟网络网关。 系统可能会提示确认是否要删除该网关。 除了 S2S 配置,如果还有此 VNet 的 P2S 配置,则删除虚拟网络网关会自动断开所有 P2S 客户端且不发出警告。
Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
此时,虚拟网络网关已被删除。 可以使用接下来的步骤删除不再使用的任何资源。
若要删除本地网络网关,请先获取相应本地网络网关的列表。
$LNG=Get-AzLocalNetworkGateway -ResourceGroupName "TestRG1" | where-object {$_.Id -In $Conns.LocalNetworkGateway2.Id}
然后,删除相应本地网络网关。 系统可能会提示确认是否要删除每个本地网络网关。
$LNG | ForEach-Object {Remove-AzLocalNetworkGateway -Name $_.Name -ResourceGroupName $_.ResourceGroupName}
若要删除公共 IP 地址资源,请先获取虚拟网络网关的 IP 配置。
$GWIpConfigs = $Gateway.IpConfigurations
然后,获取此虚拟网络网关使用的公共 IP 地址资源列表。 如果虚拟网络网关采用主动-主动配置,则将显示两个公共 IP 地址。
$PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
删除公共 IP 资源。
$PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "TestRG1"}
删除网关子网并设置配置。
$GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" Set-AzVirtualNetwork -VirtualNetwork $GWSub
删除 VNet 到 VNet VPN 网关
若要删除 V2V 配置中的虚拟网络网关,必须先删除与该网关相关的每个资源。 由于存在依赖关系,必须按特定的顺序删除资源。 在以下示例中,必须指定某些值,而其他值则是输出结果。 为方便演示,我们在示例中使用了以下特定值:
- VNet 名称:VNet1
- 资源组名称:TestRG1
- 虚拟网关名称: VNet1GW
单击要删除的虚拟网络网关。
$GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
检查该虚拟网络网关是否已建立任何连接。
get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
与虚拟网络网关建立的其他连接可能属于不同的资源组。 检查其他每个资源组中的其他连接。 在此示例中,我们会检查来自 RG2 的连接。 请针对可能与虚拟网络网关建立了连接的每个资源组运行此步骤。
get-Azvirtualnetworkgatewayconnection -ResourceGroupName "RG2" | where-object {$_.VirtualNetworkGateway2.Id -eq $GW.Id}
获取两个方向的连接列表。 由于这是一种 VNet 到 VNet 配置,因此需要获取两个方向的连接列表。
$ConnsL=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
在此示例中,我们会检查来自 RG2 的连接。 请针对可能与虚拟网络网关建立了连接的每个资源组运行此步骤。
$ConnsR=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "<NameOfResourceGroup2>" | where-object {$_.VirtualNetworkGateway2.Id -eq $GW.Id}
删除所有连接。 系统可能会提示确认是否要删除每个连接。
$ConnsL | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName} $ConnsR | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
删除虚拟网络网关。 系统可能会提示确认是否要删除该虚拟网络网关。 除了 V2V 配置,如果还有此 VNet 的 P2S 配置,则删除虚拟网络网关会自动断开所有 P2S 客户端且不发出警告。
Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
此时,虚拟网络网关已被删除。 可以使用接下来的步骤删除不再使用的任何资源。
若要删除公共 IP 地址资源,请获取虚拟网络网关的 IP 配置。
$GWIpConfigs = $Gateway.IpConfigurations
然后,获取此虚拟网络网关使用的公共 IP 地址资源列表。 如果虚拟网络网关采用主动-主动配置,则将显示两个公共 IP 地址。
$PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
删除公共 IP 资源。 系统可能会提示确认是否要删除该公开 IP。
$PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "<NameOfResourceGroup1>"}
删除网关子网并设置配置。
$GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" Set-AzVirtualNetwork -VirtualNetwork $GWSub
删除点到站点 VPN 网关
若要删除 P2S 配置中的虚拟网络网关,必须先删除与该网关相关的每个资源。 由于存在依赖关系,必须按特定的顺序删除资源。 在以下示例中,必须指定某些值,而其他值则是输出结果。 为方便演示,我们在示例中使用了以下特定值:
- VNet 名称:VNet1
- 资源组名称:TestRG1
- 虚拟网关名称: VNet1GW
注意
删除 VPN 网关时,所有连接的客户端将与 VNet 断开连接且不发出警告。
单击要删除的虚拟网络网关。
GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
删除虚拟网络网关。 系统可能会提示确认是否要删除该虚拟网络网关。
Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
此时,虚拟网络网关已被删除。 可以使用接下来的步骤删除不再使用的任何资源。
若要删除公共 IP 地址资源,请先获取虚拟网络网关的 IP 配置。
$GWIpConfigs = $Gateway.IpConfigurations
然后,获取此虚拟网络网关使用的公共 IP 地址列表。 如果虚拟网络网关采用主动-主动配置,则将显示两个公共 IP 地址。
$PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
删除公共 IP。 系统可能会提示确认是否要删除该公开 IP。
$PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "<NameOfResourceGroup1>"}
删除网关子网并设置配置。
$GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" Set-AzVirtualNetwork -VirtualNetwork $GWSub
通过删除资源组来删除 VPN 网关
如果不关心是否要保留资源组中的任何资源,而只是要从头开始配置,则可以删除整个资源组。 这种方法可以快速删除所有信息。
获取订阅中所有资源组的列表。
Get-AzResourceGroup
找到想要删除的资源组。
找到想要删除的资源组,并查看该资源组中的资源列表。 在示例中,资源组的名称为 TestRG1。 请修改示例以检索所有资源的列表。
Find-AzResource -ResourceGroupNameContains TestRG1
检查列表中的资源。
返回列表后,请检查该列表,确认要删除该资源组中的所有资源以及资源组本身。 如果要保留资源组中的某些资源,请使用本文之前部分中的步骤删除网关。
删除资源组和资源。 要删除资源组及其包含的所有资源,请修改本示例,并运行。
Remove-AzResourceGroup -Name TestRG1
检查状态。 Azure 需要花费一段时间来删除所有资源。 可以使用以下 cmdlet 检查资源组的状态。
Get-AzResourceGroup -ResourceGroupName TestRG1
返回的结果显示“Succeeded”。
ResourceGroupName : TestRG1 Location : chinaeast2 ProvisioningState : Succeeded
后续步骤
有关常见问题解答信息,请参阅 Azure VPN 网关常见问题解答。