你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 PowerShell 删除虚拟网络网关

可以使用多种不同的方法来删除 VPN 网关配置中的虚拟网络网关。

  • 如果要删除所有信息并从头开始配置(例如,在测试环境中),可以删除资源组。 删除某个资源组时,会删除该组中的所有资源。 仅不想要保留资源组中的任何资源时,才建议使用此方法。 使用这种方法时,无法做到有选择性地删除一部分资源。

  • 如果想要保留资源组中的某些资源,则删除虚拟网络网关的过程会略微复杂一些。 在删除虚拟网络网关之前,必须先删除任何依赖于该网关的资源。 遵循的步骤取决于创建的连接类型,以及每个连接的依赖资源。

删除站点到站点 VPN 网关

若要删除 S2S 配置中的虚拟网络网关,必须先删除与该网关相关的每个资源。 由于存在依赖关系,必须按特定的顺序删除资源。 在以下示例中,必须指定某些值,而其他值则是输出结果。 为方便演示,我们在示例中使用了以下特定值:

  • VNet 名称:VNet1
  • 资源组名称:TestRG1
  • 虚拟网关名称: VNet1GW
  1. 单击要删除的虚拟网络网关。

    $GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    
  2. 检查该虚拟网络网关是否已建立任何连接。

    get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    $Conns=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    
  3. 删除所有连接。 系统可能会提示确认是否要删除每个连接。

    $Conns | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
    
  4. 删除虚拟网络网关。 系统可能会提示确认是否要删除该网关。 除了 S2S 配置,如果还有此 VNet 的 P2S 配置,则删除虚拟网络网关会自动断开所有 P2S 客户端且不发出警告。

    Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    

    此时,虚拟网络网关已被删除。 可以使用接下来的步骤删除不再使用的任何资源。

  5. 若要删除本地网络网关,请先获取相应本地网络网关的列表。

    $LNG=Get-AzLocalNetworkGateway -ResourceGroupName "TestRG1" | where-object {$_.Id -In $Conns.LocalNetworkGateway2.Id}
    

    然后,删除相应本地网络网关。 系统可能会提示确认是否要删除每个本地网络网关。

    $LNG | ForEach-Object {Remove-AzLocalNetworkGateway -Name $_.Name -ResourceGroupName $_.ResourceGroupName}
    
  6. 若要删除公共 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"}
    
  7. 删除网关子网并设置配置。

    $GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet"
    Set-AzVirtualNetwork -VirtualNetwork $GWSub
    

删除 VNet 到 VNet VPN 网关

若要删除 V2V 配置中的虚拟网络网关,必须先删除与该网关相关的每个资源。 由于存在依赖关系,必须按特定的顺序删除资源。 在以下示例中,必须指定某些值,而其他值则是输出结果。 为方便演示,我们在示例中使用了以下特定值:

  • VNet 名称:VNet1
  • 资源组名称:TestRG1
  • 虚拟网关名称: VNet1GW
  1. 单击要删除的虚拟网络网关。

    $GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    
  2. 检查该虚拟网络网关是否已建立任何连接。

    get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    
  3. 与虚拟网络网关建立的其他连接可能属于不同的资源组。 检查其他每个资源组中的其他连接。 在此示例中,我们会检查来自 RG2 的连接。 请针对可能与虚拟网络网关建立了连接的每个资源组运行此步骤。

    get-Azvirtualnetworkgatewayconnection -ResourceGroupName "RG2" | where-object {$_.VirtualNetworkGateway2.Id -eq $GW.Id}
    
  4. 获取两个方向的连接列表。 由于这是一种 VNet 到 VNet 配置,因此需要获取两个方向的连接列表。

    $ConnsL=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    
  5. 在此示例中,我们会检查来自 RG2 的连接。 请针对可能与虚拟网络网关建立了连接的每个资源组运行此步骤。

     $ConnsR=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "<NameOfResourceGroup2>" | where-object {$_.VirtualNetworkGateway2.Id -eq $GW.Id}
    
  6. 删除所有连接。 系统可能会提示确认是否要删除每个连接。

    $ConnsL | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
    $ConnsR | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
    
  7. 删除虚拟网络网关。 系统可能会提示确认是否要删除该虚拟网络网关。 除了 V2V 配置,如果还有此 VNet 的 P2S 配置,则删除虚拟网络网关会自动断开所有 P2S 客户端且不发出警告。

    Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    

    此时,虚拟网络网关已被删除。 可以使用接下来的步骤删除不再使用的任何资源。

  8. 若要删除公共 IP 地址资源,请获取虚拟网络网关的 IP 配置。

    $GWIpConfigs = $Gateway.IpConfigurations
    
  9. 然后,获取此虚拟网络网关使用的公共 IP 地址资源列表。 如果虚拟网络网关采用主动-主动配置,则将显示两个公共 IP 地址。

    $PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
    
  10. 删除公共 IP 资源。 系统可能会提示确认是否要删除该公开 IP。

    $PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "<NameOfResourceGroup1>"}
    
  11. 删除网关子网并设置配置。

    $GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet"
    Set-AzVirtualNetwork -VirtualNetwork $GWSub
    

删除点到站点 VPN 网关

若要删除 P2S 配置中的虚拟网络网关,必须先删除与该网关相关的每个资源。 由于存在依赖关系,必须按特定的顺序删除资源。 在以下示例中,必须指定某些值,而其他值则是输出结果。 为方便演示,我们在示例中使用了以下特定值:

  • VNet 名称:VNet1
  • 资源组名称:TestRG1
  • 虚拟网关名称: VNet1GW

注意

删除 VPN 网关时,所有连接的客户端将与 VNet 断开连接且不发出警告。

  1. 单击要删除的虚拟网络网关。

    GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    
  2. 删除虚拟网络网关。 系统可能会提示确认是否要删除该虚拟网络网关。

    Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    

    此时,虚拟网络网关已被删除。 可以使用接下来的步骤删除不再使用的任何资源。

  3. 若要删除公共 IP 地址资源,请先获取虚拟网络网关的 IP 配置。

    $GWIpConfigs = $Gateway.IpConfigurations
    

    然后,获取此虚拟网络网关使用的公共 IP 地址列表。 如果虚拟网络网关采用主动-主动配置,则将显示两个公共 IP 地址。

    $PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
    
  4. 删除公共 IP。 系统可能会提示确认是否要删除该公开 IP。

    $PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "<NameOfResourceGroup1>"}
    
  5. 删除网关子网并设置配置。

    $GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet"
    Set-AzVirtualNetwork -VirtualNetwork $GWSub
    

通过删除资源组来删除 VPN 网关

如果不关心是否要保留资源组中的任何资源,而只是要从头开始配置,则可以删除整个资源组。 这种方法可以快速删除所有信息。

  1. 获取订阅中所有资源组的列表。

    Get-AzResourceGroup
    
  2. 找到想要删除的资源组。

    找到想要删除的资源组,并查看该资源组中的资源列表。 在示例中,资源组的名称为 TestRG1。 请修改示例以检索所有资源的列表。

    Find-AzResource -ResourceGroupNameContains TestRG1
    
  3. 检查列表中的资源。

    返回列表后,请检查该列表,确认要删除该资源组中的所有资源以及资源组本身。 如果要保留资源组中的某些资源,请使用本文之前部分中的步骤删除网关。

  4. 删除资源组和资源。 要删除资源组及其包含的所有资源,请修改本示例,并运行。

    Remove-AzResourceGroup -Name TestRG1
    
  5. 检查状态。 Azure 需要花费一段时间来删除所有资源。 可以使用以下 cmdlet 检查资源组的状态。

    Get-AzResourceGroup -ResourceGroupName TestRG1
    

    返回的结果显示“Succeeded”。

    ResourceGroupName : TestRG1
    Location          : eastus
    ProvisioningState : Succeeded
    

后续步骤

有关常见问题解答信息,请参阅 Azure VPN 网关常见问题解答