Private/Get-URLFromObjectType.ps1

function Get-URLFromObjectType {
  [CmdletBinding()]
  Param (
      [parameter(Mandatory = $true, HelpMessage = "IP/FQDN of the array")]
      [string]$Server,
      [Parameter(Mandatory = $true,HelpMessage = 'URI')]
      [string]$URI,
      [parameter(Mandatory = $true, HelpMessage = 'Type associated to the item')]
      [string]$TypeName,
      [parameter(Mandatory = $false, HelpMessage = 'Ressource Filter')]
      [string]$Filter,
      [parameter(Mandatory = $false, HelpMessage = 'Compact the response')]
      [switch]$Compact,
      [parameter(Mandatory = $false, HelpMessage = 'Exceptions')]
      [string[]]$Exception = ''
  )

  Write-Verbose "Executing function: $($MyInvocation.MyCommand)"

  $object = New-Object $TypeName

  $object  | get-member -type Property | Where-Object {$Exception -notcontains $_.Name} | foreach-object {$fields += $_.Name + ','}

  #Remove last ,
  $fields = $fields -replace '.$'

  $URL = 'https://'+$Server+$URI+'?fields='+$fields

  If ($Filter) {
    $URL = $URL + '&filter=' + $Filter
  }

  If ($Compact) {
    $URL = $URL + '&compact=true'
  }

  return $URL
}