functions/get-d365tfsuri.ps1

<#
.SYNOPSIS
Get the TFS / VSTS registered URL / URI
 
.DESCRIPTION
Gets the URI from the configuration of the local tfs connection in visual studio
 
.PARAMETER Path
Path to the tf.exe file that the cmdlet will invoke
 
.EXAMPLE
Get-D365TfsUri
 
This will invoke the default tf.exe client located in the Visual Studio 2015 directory
and fetch the configured URI.
 
.NOTES
Author: Mötz Jensen (@Splaxi)
#>

function Get-D365TfsUri {
    [CmdletBinding(DefaultParameterSetName = 'Default')]
    param (
        [Parameter(Mandatory = $false, ParameterSetName = 'Default', Position = 1 )]
        [string]$Path = $Script:TfDir
    )
    
    $executable = Join-Path $Path "tf.exe"
    if (!(Test-PathExists -Path $executable -Type Leaf)) {return}

    Write-PSFMessage -Level Verbose -Message "Invoking tf.exe"
    #* Small hack to get the output from the execution into a variable.
    $res = & $executable "settings" "connections" 2>$null
    Write-PSFMessage -Level Verbose -Message "Result from tf.exe: $res" -Target $res

    if (![string]::IsNullOrEmpty($res)) {
        [PSCustomObject]@{
            TfsUri = $res[2].Split(" ")[0]
        }
    }
    else {
        Write-PSFMessage -Level Host -Message "No TFS / VSTS connections found. It looks like you haven't configured the server connection and workspace yet."
    }
}