function Get-Tag { <# .SYNOPSIS Return address tag. .DESCRIPTION Return address tag by id, address object or subnetwork object. Or leave it empty at take all tags at once. #> [CmdletBinding(DefaultParameterSetName="NoParams")] [OutputType([PS.IPAM.Tag])] param ( [parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByID")] [ValidateNotNullOrEmpty()] [int] $Id, [parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByAddressObject")] [ValidateNotNullOrEmpty()] [PS.IPAM.Address] $AddressObject, [parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="BySubnetObject")] [ValidateNotNullOrEmpty()] [PS.IPAM.Subnetwork] $SubnetObject ) process { $_params = @{ Controller = [PS.IPAM.controllers]::addresses Method = "GET" Type = [PS.IPAM.types]::tag } $_identifiers = @("tags") switch ($PSCmdlet.ParameterSetName) { "ByID" { $_identifiers += $Id; break } "ByAddressObject" { if ($AddressObject.TagId) { $_identifiers += $AddressObject.TagId } else { return $null } break } "BySubnetObject" { if ($SubnetObject.TagId) { $_identifiers += $SubnetObject.TagId } else { return $null } break } } $_params.Add("Identifiers",$_identifiers) Invoke-Request @_params } } Export-ModuleMember -Function Get-Tag