Public/Backup-SqlDatabasesRemotely.ps1
function Backup-SqlDatabasesRemotely { ############################################################################## #.SYNOPSIS # Backs up SQL databases remotely (used with Restore-SqlDatabasesRemotely) # #.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) # #.PARAMETER ComputerName # Name of the remote computer you will connect to # #.PARAMETER Username # Username # #.PARAMETER Password # Password # #.EXAMPLE # $sqlServerName = "MS-SQL2008R2" # $databases = "sitecore_master, sitecore_web, sitecore_core" # $backupDir = "C:\backups" # $computerName = "RemoteComputer" # $username = "username" # $password = "password" # Backup-SqlDatabasesRemotely -ComputerName $computerName -Username $username -Password $password -SqlServerName $sqlServerName -DatabaseNames $databases -BackupDirectory $backupDir ############################################################################## [CmdletBinding()] Param ( $VerbosePreference = $PSCmdlet.GetVariableValue('VerbosePreference'), [string]$SqlServerName, [string]$DatabaseNames, [string]$BackupDirectory, [string]$ComputerName, [string]$Username, [string]$Password ) try { #region Begin $systemLog = NewSystemLog -Name "Backup-SqlDatabasesRemotely" WriteLog -Path $systemLog -Message "OUTPUT: Starting remoting, please wait" #endregion Begin #region Process $session = NewRemoteSession -ComputerName $ComputerName -Username $Username -Password $Password -LogFile $systemLog WriteLog -Path $systemLog -Message "OUTPUT: Waiting result from remoting, please wait" $capturedResult = Invoke-Command -Session $session -ScriptBlock ${function:BackupSqlDatabasesRemotely} -ArgumentList $SqlServerName, $DatabaseNames, $BackupDirectory, $VerbosePreference foreach ($message in $capturedResult) { WriteLog -Path $systemLog -Message $message } #endregion Process } catch { RegisterException } } |