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