Public/Backup-SqlDatabases.ps1

function Backup-SqlDatabases
{
    ##############################################################################
    #.SYNOPSIS
    # Backs up SQL databases (used with Restore-SqlDatabases)
    #
    #.DESCRIPTION
    # Use this function to maintain backups of website SQL databases
    # Supports all MS SQL Server versions from MS SQL Server 2008 R2 to MS SQL Server 2014
    # Used with Restore-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"
    # Backup-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 "Backup-SqlDatabases"

        WriteLog -Path $systemLog -Message "OUTPUT: Backup 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

        BackupSqlDatabases -SqlServerName $SqlServerName -Databasenames $DatabaseNames -BackupDirectory $BackupDirectory -LogFile $systemLog

        #endregion Process

        #region End

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