function Get-Nameserver { [CmdletBinding(DefaultParameterSetName="ByID")] param ( [parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByID")] [ValidateNotNullOrEmpty()] [int] $Id ) process { [string[]]$visiblePropertiesList = @('Id','Name','Address','Description') $visibleProperties = [System.Management.Automation.PSPropertySet]::new('DefaultDisplayPropertySet',$visiblePropertiesList) $_params = @{ Controller = "tools" SubController = "nameservers" Method = "GET" } switch ($PSCmdlet.ParameterSetName) { "ByID" { $_nameserverId = $Id } } $_identifiers = @($_nameserverId) $_params.Add("Identifiers",$_identifiers) Invoke-Request @_params | Select-Object @{n="address";e={$_.namesrv1}},* | Select-Object -ExcludeProperty namesrv1 | ` Add-Member -MemberType MemberSet -Name PSStandardMembers -Value $visibleProperties -PassThru } } Export-ModuleMember -Function Get-Nameserver