如何检查 Azure Vnet 是否正在使用

How to check if Azure Vnet is in use

我正在使用 Az PowerShell 模块。我想做以下事情。

  1. 确认指定的 azure vnet 未在使用中。
  2. 如果不使用,请删除 VNET。

验证 VNET 是否正在使用的最简单方法是在 PowerShell 中使用 Remove-AzVirtualNetwork 并查看它是否抛出错误。我想知道是否有更好的方法来做到这一点。

我可能建议您使用 Get-AzVirtualNetworkUsageList 来获取每个子网的使用情况。

CurrentValue 的值显示分配的专用 IP 使用情况。如果它大于 0,则网络应该正在使用中。

这是前段时间创建的工作脚本中的一个片段,可以解决问题

$vnetname = ""
$vnetrgname = ""
$VNet = Get-AzVirtualNetwork -Name $vnetname -ResourceGroupName $vnetrgname
$ips = $VNet.Subnets | % {($_.IpConfigurations).Count}
$total = ($ips | Measure-Object -Sum).Sum
if ($total -eq "0")
{
Write-Host -ForegroundColor Green "Virtual Network '$vnetname' not in use, deleting Virtual Network"
Remove-AzVirtualNetwork -Name $vnetname -ResourceGroupName $vnetrgname -Force
}
Else 
{
Write-Host -ForegroundColor  Yellow -BackgroundColor Black "Virtual Network '$vnetname' in use, Skipping deletion of Virtual Network"
}

原文:

https://raw.githubusercontent.com/hhazeley/HannelsToolBox/master/Functions/Remove-AzureV2VMandResources.ps1

参考 Link:https://docs.microsoft.com/en-us/powershell/module/az.network/get-azvirtualnetworkusagelist?view=azps-5.5.0

#Fetch the VNet Configuration

$VNetDetails=Get-AzVirtualNetwork -Name "<VirtualNetworkName>"-ResourceGroupName "<ResourceGroupName>"

#Fetch the SubnetConfig from the VNETConfig

$VnetSubnetConfig=Get-AzVirtualNetworkSubnetConfig -Name "<SubnetName>" -VirtualNetwork $VNetDetails

#Fetch the IPUsage from the SubnetID.

$PrivateIPUsage=Get-AzVirtualNetworkUsageList -ResourceGroupName "<ResoruceGroupName>" -Name "<VirtualNetworkName>" | where ID -eq $VnetSubnetConfig.id

[int] $TotalIPLimit=$PrivateIPUsage.Limit
[int] $TotalIPUsed=$PrivateIPUsage.CurrentValue

if($TotalIPUsed -lt $TotalIPLimit)
{

    Write-Host "Private IP's are available in this Subnet for Usage."

}

else

{

    Write-Host "Private IP's are not available in this Subnet for Usage."

}