0

I need to back up several powershell databases that are on the same server in Azure.

I currently have a script that helps me make backups but individually, apart I must keep changing the names of the backups

This is my code:

Import-Module $PSScriptRoot\..\util\utilConnection.ps1;
Import-Module $PSScriptRoot\..\util\utilDate.ps1;
#Import-Module $PSScriptRoot\..\logging\Logging_Functions.ps1;
Import-Module AzureRM.sql

$TIMESTAMP = getTimeStamp;

#$LogPath = getPathLog;
#$logFileName = "prueba_jobDatabaseBackup.log";

#Log-Start -LogPath $LogPath -LogName $logFileName -ScriptVersion "1.5"

#return;

#Login-AzureRmAccount
loginRMAccount;

#Set subscription Azure
prueba;

Write-Output "";

#Create credential Source DB Server (QA)
#$myPasswordDB = ConvertTo-SecureString $SQL_ACCOUNT_PASSWORD_QA -AsPlainText -Force;
#$myCredentialDB = New-Object System.Management.Automation.PSCredential ($SQL_ACCOUNT_NAME_QA, $myPasswordDB);
#$sqlCredential = Get-Credential -Credential $myCredentialDB;

#Create credential Source DB Server (Prod)
$myPasswordDB = ConvertTo-SecureString $SQL_ACCOUNT_PASSWORD_QA -AsPlainText -Force;
$myCredentialDB = New-Object System.Management.Automation.PSCredential ($SQL_ACCOUNT_NAME_QA, $myPasswordDB);
$sqlCredential = Get-Credential -Credential $myCredentialDB;

$resourceGroup = "resGroupDB";
$serverName = "domserverqa";
$database = "prueba";  **// here I have to change the name of the backup file**



$primarykey = $STORAGE_ACCOUNT_BACKUP_KEY; #strdatabasebackup




$StorageUri = ("https://strdatabasebackup.blob.core.windows.net/strdatabasebackupblob/(2018-01-09-07:00)dbdom_buin.bacpac"); // here I also have to change the final name individually for each database




#$sqlCredential = getCredentialSQLServerQA; #SQL Server target

$SQL_SERVER_FULLNAME_QA = getSQLServerFullNameAzureQA;
$TIMEOUT = 300;

$importRequest = New-AzureRmSqlDatabaseImport –ResourceGroupName $resourceGroup –ServerName $serverName –DatabaseName $database –StorageKeytype StorageAccessKey –StorageKey $primarykey -StorageUri $StorageUri -AdministratorLogin $sqlCredential.UserName –AdministratorLoginPassword $sqlCredential.Password –Edition Basic –ServiceObjectiveName basic -DatabaseMaxSizeBytes 2147483648 # 2GB -> 2 * 1024 MB -> 2 * 1024 * 1024 KB -> 2 * 1024 * 1024 * 1024 Bytes

$importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink;

while ($importStatus.Status -eq "InProgress")
{
    $importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink;        
    Write-Output ".";
    [System.Threading.Thread]::Sleep(2000);            
}

[System.Threading.Thread]::Sleep(4000); 

How can I implement a foreach or array to put all the databases together and back them up one by one without having to do it manually?

If someone has any ideas please help me thanks

1 Answer 1

1

Pass you DBNames as a list to a ForLoop or a funciton

Just pass in a list of database names in a ForLoop, passing the dbname in a variable to your code.

$AzureDBNames = 'AzureDB01','AzureDB01','AzureDB01'
ForEach ($AzureDBName in $AzureDBNames)
{
       # Code begins here 
       "Backing up $AzureDBName"
}

Turn your code into a function with a parameter that accepts one or more db names.

Function New-AzureDBBackup
{
    [CmdletBinding()]
    [Alias('NABB')]

    Param
    (
        [string[]]$AzureDBNames
    )

    # Code begins here

}

New-AzureDBBackup -AzureDBNames 'AzureDB01','AzureDB01','AzureDB01'

Read the online help on:

About_Functions
About_For
About_Loops
About_Variables
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.