Public/Restore-SqlDatabases.ps1

function Restore-SqlDatabases
{
    ##############################################################################
    #.SYNOPSIS
    # Restores SQL databases (used with Backup-SqlDatabases)
    #
    #.DESCRIPTION
    # Use this function to maintain backups restore of website SQL databases
    # Supports all MS SQL Server versions from MS SQL Server 2008 R2 to MS SQL Server 2014
    # Used with Backup-SqlDatabases
    #
    #.PARAMETER SqlServerName
    # SQL Server name
    #
    #.PARAMETER DatabaseNames
    # Databases which will be backed up (coma separated)
    #
    #.PARAMETER BackupDirectory
    # Backup directory (absolute path)
    #
    #.EXAMPLE
       # $sqlServerName = "MS-SQL2008R2"
    # $databases = "sitecore_master, sitecore_web, sitecore_core"
    # $backupDir = "C:\backups"
    # Restore-SqlDatabases -SqlServerName $sqlServerName -DatabaseNames $databases -BackupDirectory $backupDir
    ##############################################################################

    [CmdletBinding()]
    Param
    (
        $VerbosePreference = $PSCmdlet.GetVariableValue('VerbosePreference'),

        [string]$SqlServerName,
        [string]$DatabaseNames,
        [string]$BackupDirectory    
    )

    try
    {
        #region Begin
        
        $systemLog = NewSystemLog -Name "Restore-SqlDatabases"

        WriteLog -Path $systemLog -Message "OUTPUT: Restore databases started"
        WriteLog -Path $systemLog -Message "SQL Server name: '$SQLServerName'"
        WriteLog -Path $systemLog -Message "Database names: '$DatabaseNames'"
        WriteLog -Path $systemLog -Message "Backup directory: '$BackupDirectory'"

        #endregion Begin

        #region Process

        RestoreSqlDatabases -SqlServerName $SqlServerName -DatabaseNames $DatabaseNames -BackupDirectory $BackupDirectory -LogFile $systemLog

        #endregion Process

        #region End

        WriteLog -Path $systemLog -Message "OUTPUT: Restore databases finished"
        WriteLog -Path $systemLog -Message "OUTPUT: Detailed information logged into '$systemLog'"
    
        #endregion End
    }
    catch
    {
        RegisterException
    }
}