functions/SharedFunctions.ps1

# Shared function for module

Function Get-SQLServerFullName($param)
{
    switch ($param)
    {
        9 { return "SQL Server 2005"}
        10 { return "SQL Server 2008"}
        10.50 { return "SQL Server 2008 R2"}
        11 { return "SQL Server 2012"}
        12 { return "SQL Server 2014"}
        13 { return "SQL Server 2016"}
    }
}

<#
.Synopsis
   Connect to SQL Server
.DESCRIPTION
   Function can connect to SQL server with authetication Windows
.EXAMPLE
   Example of how to use this cmdlet
.EXAMPLE
   Another example of how to use this cmdlet
#>

function Get-SQLServerVersion
{
    [CmdletBinding()]
    Param
    (
        # Param1 help description
        [Parameter(Mandatory=$true,ValueFromPipeline=$true)]$ServerInstance
    )

    Begin
    { }

    Process
    {
        try
        { 
            $connectsqlserver = New-Object Microsoft.SqlServer.Management.Smo.Server $ServerInstance
            $connectsqlserver.ConnectionContext.ApplicationName = "DBA PowerShell App"
            $connectsqlserver.ConnectionContext.ConnectTimeout = 1

            Write-Verbose "Connect to server $ServerInstance"
               if ($connectsqlserver.ConnectionContext.IsOpen -eq $false) {

                $connectsqlserver.ConnectionContext.Connect()
            }
        }
        catch 
        {
            Write-Host $_.Exception.Message -ForegroundColor Yellow               
        }
        finally
        { 
            $connectsqlserver | Select Name, Product, Edition, ProductLevel, VersionMajor, @{L="VersionName";E={Get-SQLServerFullName $_.versionmajor}}, @{L="Build";E={$_.VersionString}} 
        }
    }
    End
    {        
        Write-Verbose "Disconnect all connection"
        try
        {
            if ($connectsqlserver.ConnectionContext.IsOpen -eq $true)
            {
                $connectsqlserver.ConnectionContext.Disconnect()
            }
            else
            {
                
            }
        }
        catch
        {
            Write-Host $_.Exception.Message -ForegroundColor Yellow         
        }
    }
}