Powershell v3,使用Find-IpamFreeAddress

时间:2013-11-11 20:04:22

标签: powershell-v3.0

我使用此命令行从IPAM搜索免费IP地址,

Get-IpamRange -StartIPAddress 143.219.186.1 -EndIPAddress 143.219.187.254 |发现-IpamFreeAddress

此命令仅提供未在IPAM IP Inventory上列出的可用IP。我有一个名为“IP地址状态”的列,其值为Free,Assigned,Reserved或Submitted。 我只想找到基于“免费”的IPAM列出的免费IP地址。

有谁知道哪些命令只能搜索“免费”地址?

2 个答案:

答案 0 :(得分:1)

在黑暗中拍摄,但这是怎么回事:

Get-IpamRange -StartIPAddress 143.219.186.1 -EndIPAddress 143.219.187.254 | Find-IpamFreeAddress | Where-Object {$ _。“IP Address Status”-eq“Free”}

答案 1 :(得分:0)

我找到了特定列“免费”的长码编码答案,

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