我可以在Azure子网中找到可用IP地址的数量吗?

问题描述

我正在尝试找到一种列出Azure vNet中可用IP地址数量的方法。 我知道这在GUI中可用,如下所示:

enter image description here

问题是,我们在Powershell Az模块中可以有相同的信息吗?

谢谢!

爱丹

解决方法

从我所见,没有直接方法可以从子网地址范围中获取可用IP地址的数量。

但是,使用以下公式很容易:

2 ^ (32 - netmask length) - number of reserved Azure IPs - number of already occupied IPs

因此,如果您有一个子网地址范围,例如10.1.0.0/24,而一个IP已经被另一台设备占用,则计算得出:

(2 ^ (32 - 24)) - 5 - 1 => (2 ^ 8) - 6 => 256 - 6 => 250

此外,使用PowerShell,我们可以将这些步骤放入这样的代码中:

$resourceGroupName = "myResourceGroup"
$virtualNetworkName = "myResourceGroup-vnet"
$subnetName = "default"

$virtualNetwork = Get-AzVirtualNetwork `
    -Name $virtualNetworkName `
    -ResourceGroupName $resourceGroupName

$subnet = Get-AzVirtualNetworkSubnetConfig `
    -VirtualNetwork $virtualNetwork `
    -Name $subnetName

$subnetMask = $subnet.AddressPrefix.Split("/")[1]

$netmaskLength = [Math]::Pow(2,32 - [int]$subnetMask)

$availableIpAddresses = $netmaskLength - 5 - $subnet.IpConfigurations.Count

$availableIpAddresses

上述Az模块Cmdlet的参考:

此外,请查看MSDN,以了解Azure为什么专门保留5个IP地址。

,

我遇到了这个solution

$TableProperties = @(
    @{Name="VNET" ; Expression={$VNET.Name}}
    "Name"
    "AddressPrefix"
    @{Name="IPsConfigured" ; Expression={$SubnetConfigured.Count}}
    @{Name="IPsLeft" ; Expression={$AvailableAddresses - $SubnetConfigured.Count}} 
)

$Subnet | 
    Select-Object $TableProperties | 
        Format-Table -Autosize

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...