CmdLets/Connect-LibraryApplicationShare.ps1

Function Connect-LibraryApplicationShare 
 {

    [CmdletBinding(DefaultParameterSetName="App")]
    Param(
        [Parameter(Mandatory=$True,ParameterSetName="App")]
            $Applications,
        [Parameter(Mandatory=$True,ParameterSetName="Path")]
            $Path
    )
    Begin {}
    Process {
        Switch ($PSCmdlet.ParameterSetName){
            "App"{
                $Paths = ($Applications | Where-object {$_.Source.Copy.Source -like "\\*" }).Source.Copy.Source | Sort-Object -Unique
            }
            "Path"{
                $Paths = $Path
            }
        }

        ForEach ($Path in $Paths){
            $UNC = "\\"
            $Path.Substring(2).Split("\")[0..1] | ForEach-Object {
                Write-Debug "Joining $UNC and $_"
                $UNC = Join-Path $UNC $_
            }
            Do {
                If (Get-SMBMapping -RemotePath $UNC -ErrorAction SilentlyContinue){
                    Write-Verbose "Connected: $UNC"
                    $Connected = $true
                } else {
                    $Connected = $false
                    Write-Host "Please provide SMB Share Credentials" -ForegroundColor DarkYellow
                    Write-Host "`t$UNC" -ForegroundColor Blue
                    $cred = Get-Credential -Message "Please provide SMB Credentials"
                    New-SMBMapping -RemotePath $UNC -UserName $Cred.UserName -Password $Cred.GetNetworkCredential().Password
                }
            } While (!($Connected))
        }
    }
    End {}

}