58 lines
1.9 KiB
PowerShell
58 lines
1.9 KiB
PowerShell
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 |