71 lines
2.5 KiB
PowerShell
71 lines
2.5 KiB
PowerShell
function Get-Vlan {
|
|
<#
|
|
.SYNOPSIS
|
|
|
|
Return vlan object.
|
|
|
|
.DESCRIPTION
|
|
|
|
Return vlan object by vlanId, vlan number, l2domainId (return all vlans in domain), subnet object or l2domain object
|
|
|
|
.PARAMETER Number
|
|
Vlan tag
|
|
#>
|
|
[CmdletBinding(DefaultParameterSetName="NoParams")]
|
|
[OutputType([PS.IPAM.Vlan])]
|
|
param (
|
|
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByID")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[int]
|
|
$Id,
|
|
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByNumber")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[int]
|
|
$Number,
|
|
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByL2Domain")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[int]
|
|
$L2DomainId,
|
|
[parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="BySubnetObject")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[PS.IPAM.Subnetwork]
|
|
$SubnetObject,
|
|
[parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByDomainObject")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[PS.IPAM.Domain]
|
|
$DomainObject
|
|
)
|
|
process {
|
|
$_params = @{
|
|
Controller = [PS.IPAM.controllers]::vlan
|
|
Method = "GET"
|
|
Type = [PS.IPAM.types]::Vlan
|
|
}
|
|
switch ($PSCmdlet.ParameterSetName) {
|
|
"ByID" { $_identifiers = @($Id); break }
|
|
"ByNumber" { $_identifiers = @("search",$Number); break }
|
|
"ByL2Domain"{
|
|
$_params.Item("Controller") = [PS.IPAM.controllers]::l2domains
|
|
|
|
$_l2domainId = $L2DomainId
|
|
|
|
$_identifiers = @($_l2domainId,[PS.IPAM.subcontrollers]::vlans)
|
|
break
|
|
}
|
|
"BySubnetObject" {
|
|
if ($SubnetObject.VlanId) {
|
|
$_identifiers = @($SubnetObject.VlanId); break
|
|
} else {
|
|
return $null
|
|
}
|
|
}
|
|
"DomainObject" {
|
|
Get-Vlan -L2DomainId $DomainObject.Id
|
|
}
|
|
}
|
|
$_params.Add("Identifiers",$_identifiers)
|
|
|
|
Invoke-Request @_params
|
|
}
|
|
}
|
|
Export-ModuleMember -Function Get-Vlan |