我使用这个命令行从IPAM中搜索空闲的IP地址,
-StartIPAddress 143.219.186.1 -EndIPAddress 143.219.187.254
此命令只提供未在IPAM IP目录中列出的可用IP。我有一个名为"IP地址状态“的列,其值为空闲、赋值、保留或提交。我只想在“免费”的基础上从IPAM中找到免费的IP地址。
有人知道什么命令可以只搜索“免费”地址吗?
发布于 2013-11-14 14:11:11
我为特定列"Free“找到了一个很长的编码答案,
clear-host
Function Get-FreeAddress
{ #Example call:
#Get-FreeAddress -Env:"Prod" -Container:"H07" -NumIPs:3 -GiveInfo:$false
PARAM(
[Parameter(Mandatory=$true,ValueFromPipeline=$true,HelpMessage="Environment info (Prod or NonProd)")]
[ValidateNotNullOrEmpty()]
[System.String]$Env,
[Parameter(Mandatory=$false,HelpMessage="Container Info (ie. H01, H02, etc,,")]
[ValidateNotNullOrEmpty()]
[System.String]$Container,
[Parameter(Mandatory=$false,HelpMessage="IP Count to return")]
[ValidateNotNullOrEmpty()]
[Int]$NumIPs,
[switch]$GiveInfo = $False
)
Begin {
If ($NumIPs -eq "" -or $NumIPs -eq $null) {$NumIPs = 1}
#Nothing Necessary to process
} #Begin
Process {
$cnt = 1
$IPOut = @()
$Check = "Env=$($Env);*$($Container)*"
$Ranges = Get-IpamRange -AddressFamily IPv4 | Where{$_.customconfiguration -like $check} | Sort Customconfiguration
:RangeLoop Foreach ($Rng in $Ranges)
{
if($GiveInfo){Write-Host "Range: "$Rng.networkid}
$ipaddinfo = Get-Ipamsubnet -networkid $Rng.networkid | get-ipamaddress | Where{$_.IPAddressState -eq 'Free'}
:IPLoop foreach ($ipinfo in $ipaddinfo)
{
If ($cnt -le $NumIPs)
{
if($GiveInfo){Write-Host "`t$($cnt):" $ipinfo.Address " : " $ipinfo.IPAddressState}
$cnt = $cnt + 1
$IPOut += $ipinfo.Address
}
Else
{Break RangeLoop}
}
}
Return $IPOut
}
}
Get-FreeAddress -Env:"Prod" -Container:"H07" -NumIPs:2 -GiveInfo:$false发布于 2013-11-13 14:14:22
在黑暗中开枪,但这个呢:
-StartIPAddress 143.219.186.1 -EndIPAddress 143.219.187.254 -EndIPAddress 143.219.187.254查找-IpamFreeAddress_ Where-Object {$_."IP地址状态“-eq "Free"}
https://stackoverflow.com/questions/19914891
复制相似问题