2017-04-15 11 views
1

Ich möchte SQL Azure mithilfe von PowerShell wieder in den Azure Blob-Speicher zurückversetzen. Ich habe das folgende Skript verwendet, aber es taucht immer dann auf, wenn ich versuche, zu starten.Powershell-Skript für SQL Azure-Sicherung für Microsoft Azure-Blob

Ich werde dieses Skript von Windows Task Scheduler verwenden, also wie kann ich Benutzer-ID und Passwort in PowerShell-Skript, so dass es nicht nach Benutzername/Passwort für das Abonnement fragen?

$subscriptionId = "xxxxxxxxxxxxxxxxxxxxx" 

Login-AzureRmAccount 
Set-AzureRmContext -SubscriptionId $subscriptionId 

# Database to export 
$DatabaseName = "xxxxxxxxxxx" 
$ResourceGroupName = "xxxxxxxxxxx" 
$ServerName = "xxxxxxxxxxxx" 
$serverAdmin = "xxxxxxxxxxxxxxx" 
$serverPassword = "xxxxxxxxxxx" 
$securePassword = ConvertTo-SecureString -String $serverPassword -AsPlainText -Force 
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $serverAdmin, $securePassword 

# Generate a unique filename for the BACPAC 
$bacpacFilename = $DatabaseName + (Get-Date).ToString("yyyyMMddHHmm") + ".bacpac" 


# Storage account info for the BACPAC 
$BaseStorageUri = "https://xxxxxxx.blob.core.windows.net/xxxxx/" 
$BacpacUri = $BaseStorageUri + $bacpacFilename 
$StorageKeytype = "StorageAccessKey" 
$StorageKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 

$exportRequest = New-AzureRmSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName ` 
    -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri ` 
    -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password 

Antwort

0

Sie müssen eine nicht interaktive Anmeldung in Ihrem Skript implementieren. Ändern Sie einfach Ihr Skript wie folgt:

##login Azure 
$subscriptionId = "xxxxxxxxxxxxxxxxxxxxx" 
$username = "<username>" 
$password = "<password>" 
$secstr = New-Object -TypeName System.Security.SecureString 
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)} 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr 
Login-AzureRmAccount -Credential $cred 
Select-AzureRmSubscription -SubscriptionId $subscriptionId 

Hinweis: Sie nicht anmelden Nicht-intereractively zu Azure können eine Microsoft Live-Konto, wie *@hotmail.com, *@outlook.com verwenden.

0

Es gibt wahrscheinlich zwei Möglichkeiten, wie Sie dies erreichen können.

Die erste besteht darin, den Parameter credential als Teil des Aufrufs Login-AzureRMAccount zu verwenden. Sie können ein PSCredential im Powershell-Code erstellen und dann verwenden. Beispiel: Login-AzureRmAccount -Credential $credential

Die zweite und wahrscheinlich sicherere/sicherere Methode besteht darin, einen Service-Principal zu erstellen und dann das Zertifikat auf dem betreffenden Computer zu platzieren. Anweisungen dazu finden Sie unter here. Nachdem Sie diese erstellt haben, können Sie den Parameter Login-AzureRMAccount mit dem Parameter -ServicePrincipal verwenden. Weitere Informationen finden Sie unter this link.

Verwandte Themen