Find-IpamFreeAddress

Gets one or more free IP addresses from a range of IP addresses in IPAM.

Syntax

Find-IpamFreeAddress
    [-InputObject] <CimInstance>
    [[-NumAddress] <UInt32>]
    [-TestReachability]
    [-CimSession <CimSession[]>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [<CommonParameters>]

Description

The Find-IpamFreeAddress cmdlet gets one or more free IP addresses from a range of IP addresses in IP Address Management (IPAM). If you specify the NumAddress parameter, the cmdlet returns the requested number of free IPv4 addresses. If you do not specify the NumAddress parameter, the cmdlet returns a single free IP address. The maximum number of free IP addresses that the cmdlet returns is 1024. The cmdlet does not include exclusion address ranges, reservations, and assigned addresses among the free IP addresses. If the requested number of free IP addresses could not be found, a warning occurs. If you specify the TestReachability parameter, IPAM returns a ping status and a Domain Name System (DNS) record status for each of the IP address that it returns.

Examples

Example 1: Find a free IP address

PS C:\> Get-IpamRange -StartIPAddress "10.12.3.1" -EndIPAddress "10.12.3.254" | Find-IpamFreeAddress

IpAddress       : 10.12.3.1

PingStatus      : Undetected

DnsRecordStatus : Undetected

This command gets a range of IP addresses through the Get-IpamRange cmdlet then finds a free IP address. By default, IPAM does not test the reachability of the address or the existence of a corresponding DNS record.

Example 2: Find a free IP address and test the reachability of the address

PS C:\> $FreeIPs = Get-IpamRange -StartIPAddress "10.12.3.1" -EndIPAddress "10.12.3.254" | Find-IpamFreeAddress -NumAddress 10 -TestReachability
PS C:\> $FreeIPs[0]
IpAddress       : 10.12.3.1

PingStatus      : NoReply

DnsRecordStatus : NotFound

The first command uses the Get-IpamRange cmdlet to get a range of IP addresses and then uses the Find-IpamFreeAddress cmdlet to find 10 free IP addresses. The first command then checks if the IP addresses are reachable and whether there is a corresponding DNS record. The first command then stores the result in the variable named $FreeIPs.

The second command then outputs the results stored in the variable named $FreeIPs.

Required Parameters

-InputObject

Specifies the input to this cmdlet. You can use this parameter, or you can pipe the input to this cmdlet.

Type:CimInstance
Position:1
Default value:None
Accept pipeline input:True (ByValue)
Accept wildcard characters:False

Optional Parameters

-AsJob

Runs the cmdlet as a background job. Use this parameter to run commands that take a long time to complete.

The cmdlet immediately returns an object that represents the job and then displays the command prompt. You can continue to work in the session while the job completes. To manage the job, use the *-Job cmdlets. To get the job results, use the Receive-Job cmdlet.

For more information about Windows PowerShell background jobs, see about_Jobs.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-CimSession

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Type:CimSession[]
Aliases:Session
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-NumAddress

Specifies the number of free addresses that this cmdlet gets. The cmdlet will warn you if the number of free addresses returned is less than the number requested. If you do not specify this parameter, the cmdlet returns a single free address.

Type:UInt32
Position:2
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-TestReachability

Indicates that the cmdlet tests the reachability of the IP addresses.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ThrottleLimit

Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShell® calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer. The throttle limit applies only to the current cmdlet, not to the session or to the computer.

Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

Outputs

IpamFreeAddress

This cmdlet returns an object that represents an unallocated IP address in IPAM server. Along with the IP address, the object also contains flags that specify whether IPAM server was able to ping the IP address and whether IPAM server found an associated DNS record.