Public/Join-Url.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function Join-Url {
  [CmdletBinding()]
  param(
    [Parameter(Mandatory,ValueFromPipeline)]
    [uri]$Base,
    [Parameter(Mandatory)]
    [string]$Child,
    [switch]$OutUri
  )
  process {
    if (-not ($Base.ToString().EndsWith('/'))) {
      [uri]$Base = '{0}/' -f $Base.ToString()
    }
    $Uri = [uri]::new($Base,$Child)
    if ($OutUri) {
      return $Uri
    }
    else {
      return $Uri.ToString()
    }
  }
}