function Get-SubnetUsage { [CmdletBinding(DefaultParameterSetName="ByID")] param ( [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByCIDR")] [ValidateScript({[ipaddress] $_.Split("/")[0] -and $_.Split("/")[1] -match "\d{1,2}"})] [ValidateNotNullOrEmpty()] [string] $CIDR, [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByID")] [ValidateScript({ $_ -match "^\d+$" })] [ValidateNotNullOrEmpty()] [string] $Id ) process { $_params = @{ Controller = "subnets" Method = "GET" } switch ($PSCmdlet.ParameterSetName) { "ByCIDR" { $_subnetId = (Get-Subnet -CIDR $CIDR).id if (!$_subnetId) { throw "Cannot find subnet!" } break } "ByID" { $_subnetId = $Id; break } } $_identifiers = @($_subnetId,"usage") $_params.Add("Identifiers",$_identifiers) return Invoke-Request @_params } } Export-ModuleMember -Function Get-SubnetUsage