Public/Get-BlueCatZone.ps1
function Get-BlueCatZone { <# .SYNOPSIS Retrieve a DNS Zone definition .DESCRIPTION The Get-BlueCatHost cmdlet allows the retrieval of DNS Zone definitions. .PARAMETER Name A string value representing the FQDN of the Zone definition to be retrieved. .PARAMETER ViewID An integer value representing the entity ID of the desired view. .PARAMETER View A PSCustomObject representing the desired view. .PARAMETER BlueCatSession A BlueCat object representing the session to be used for this object lookup. .EXAMPLE PS> Get-BlueCatHost -Name example.com Returns a PSCustomObject representing the requested zone definition, or NULL if not found. BlueCatSession will default to the current default session. View will default to the BlueCatSession default view. .EXAMPLE PS> Get-BlueCatHost -Name anotherzone.com -ViewID 23456 -BlueCatSession $Session3 Returns a PSCustomObject representing the requested zone definition, or NULL if not found. Use the BlueCatSession associated with $Session3 to perform this lookup. The record will be searched for in view 23456. .INPUTS None .OUTPUTS PSCustomObject representing the requested zone definition, or NULL if not found. [int] id [string] name [string] shortName [string] type = 'Zone' [string] properties [PSCustomObject] property [PSCustomObject] config [PSCustomObject] view #> [CmdletBinding(DefaultParameterSetName='byID')] param( [parameter(Mandatory)] [Alias('Zone')] [string] $Name, [Parameter(ParameterSetName='byID')] [ValidateRange(1, [int]::MaxValue)] [int]$ViewID, [Parameter(ParameterSetName='byObj',Mandatory)] [ValidateNotNullOrEmpty()] [PSCustomObject] $View, [Parameter()] [Alias('Connection','Session')] [BlueCat]$BlueCatSession = $Script:BlueCatSession ) begin { Get-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState if (-not $BlueCatSession) { throw 'No active BlueCatSession found' } } process { $thisFN = (Get-PSCallStack)[0].Command $Zone = $Name | Test-ValidFQDN if ($View) { $ViewID = $View.ID } if (-not $ViewID) { $BlueCatSession | Confirm-Settings -View $ViewID = $BlueCatSession.View.id } $zPath = $Zone.Split('\.') [array]::Reverse($zPath) $zId = $ViewID foreach ($bit in $zPath) { $Query = "getEntityByName?parentId=$($zId)&type=Zone&name=$($bit)" $BlueCatReply = Invoke-BlueCatApi -Method Get -Request $Query -BlueCatSession $BlueCatSession if (-not $BlueCatReply.id) { Write-Verbose "$($thisFN): Zone $($Zone) not found!" return } $zId = $BlueCatReply.id } $zObj = $BlueCatReply | Convert-BlueCatReply -BlueCatSession $BlueCatSession Write-Verbose "$($thisFN): Selected #$($zObj.id) as '$($zObj.name)'" $zObj } } |