Public/IpAddresses/Get-HuduIpAddress.ps1
|
<#
.SYNOPSIS Retrieves one or more IP addresses from the connected Hudu instance. .DESCRIPTION With -Id, retrieves a single IP address record by ID, returning $null instead of throwing if the ID doesn't exist (Hudu responds with an HTTP 404 in that case). Without -Id, retrieves every IP address matching the supplied filters, across all pages. .PARAMETER Id ID of a single IP address record to retrieve. .PARAMETER NetworkId Filters results to IP addresses in the given network ID. .PARAMETER Address Filters results to the given IP address. .PARAMETER Status Filters results by status, e.g. 'assigned', 'reserved', or 'dhcp'. .PARAMETER Fqdn Filters results to IP addresses with the given fully qualified domain name. .PARAMETER AssetId Filters results to IP addresses assigned to the given asset ID. .PARAMETER CompanyId Filters results to IP addresses belonging to the given company ID. .EXAMPLE Get-HuduIpAddress -Address '10.0.0.10' Returns the IP address record for 10.0.0.10. .EXAMPLE Get-HuduIpAddress -CompanyId 5 -Status 'reserved' Returns every reserved IP address belonging to company 5. .OUTPUTS Boyles.PowerShell.Hudu.Models.HuduIpAddress .OUTPUTS Boyles.PowerShell.Hudu.Models.HuduIpAddress[] #> function Get-HuduIpAddress { [CmdletBinding(DefaultParameterSetName = 'All')] [OutputType([Boyles.PowerShell.Hudu.Models.HuduIpAddress])] [OutputType([Boyles.PowerShell.Hudu.Models.HuduIpAddress[]])] param ( [Parameter(Mandatory, ParameterSetName = 'Single')] [ValidateRange(1, [int]::MaxValue)] [QueryIgnore()] [int] $Id, [Parameter(ParameterSetName = 'All')] [ValidateRange(1, [int]::MaxValue)] [QueryProperty('network_id')] [int] $NetworkId, [Parameter(ParameterSetName = 'All')] [ValidateNotNullOrEmpty()] [QueryProperty('address')] [string] $Address, [Parameter(ParameterSetName = 'All')] [ValidateNotNullOrEmpty()] [ValidateSet('Assigned', 'Reserved', 'DHCP')] [QueryProperty('status')] [string] $Status, [Parameter(ParameterSetName = 'All')] [ValidateNotNullOrEmpty()] [QueryProperty('fqdn')] [string] $Fqdn, [Parameter(ParameterSetName = 'All')] [ValidateRange(1, [int]::MaxValue)] [QueryProperty('asset_id')] [int] $AssetId, [Parameter(ParameterSetName = 'All')] [ValidateRange(1, [int]::MaxValue)] [QueryProperty('company_id')] [int] $CompanyId ) $client = Get-HuduClientInternal if ($PSCmdlet.ParameterSetName -eq 'Single') { try { [Boyles.PowerShell.Hudu.Models.HuduIpAddress] $ipAddress = $Client.GetIpAddress($Id) return $ipAddress } catch { $message = $_.Exception.Message if ($message -like '*HTTP 404*') { return $null # ID wasn't found. Hudu returns a 404 error } else { throw $_ } } } $query = ConvertTo-RequestQuery -BoundParameters $PSBoundParameters -ParameterMetadata $MyInvocation.MyCommand.Parameters | ConvertTo-StringDictionary Write-Verbose "QUERY = $($query | ConvertTo-Json)" [Boyles.PowerShell.Hudu.Models.HuduIpAddress[]] $results = $client.GetIpAddresses($query) return $results } |