Анализ файла cscfg облачных служб Azure с помощью Powershell для Fluent Migrator

У нас есть несколько проектов Cloud Deployment для наших облачных сервисов. например

\-Project.Cloud.UAT
  \-ServiceConfiguration.Cloud.cscfg
  \-ServiceDefinition.csdef
\-Project.Cloud.Production
  \-ServiceConfiguration.Cloud.cscfg
  \-ServiceDefinition.csdef

И так далее. Каждый файл cscfg имеет строку подключения к базе данных для этой конкретной среды.

Во время развертывания облачного проекта мы запускаем сценарий powe rshell, который запускает командлеты Azure для развертывания и запуска этой облачной службы.

Я хотел бы добавить шаг, чтобы запустить FluentMigrator для этой базы данных среды. Ранее я использовал FM и указывал на преобразованный Web.Config для получения строки SQL-соединения, но, похоже, не могу заставить его работать.

Может ли кто-нибудь указать мне правильное направление с помощью сценария powe rshell, чтобы открыть файл CSCFG, вручную разобрать ConnectionString в ps $var, а затем передать его непосредственно беглому мигратору.

1 ответ

Решение

Я предполагаю, что вы храните строки подключения в разделах ConfigurationSettings. Ниже приведен пример PowerShell, который извлекает файл и для каждой роли извлекает конкретные параметры, указанные в операторе switch. Вам может не понадобиться оператор switch, если у вас есть одна строка соединения, которую вы тянете. Существует также более приятный способ обработки самого параметра, но он дает вам пример извлечения определенных параметров вручную из файла cscfg.

$deploymentCloudConfigPath = "somePathToTheFile\ServiceConfiguration.Cloud.cscfg"

# Update the cscfg file to include the correct settings.
[Xml]$cscfgXml = Get-Content $deploymentCloudConfigPath 
Foreach ($role in $cscfgXml.ServiceConfiguration.Role) 
{ 
    Foreach ($setting in $role.ConfigurationSettings.Setting) 
    { 
        Switch ($setting.name) 
        { 
            "CustomSettingsName.StorageAccount" {$connString = $setting.value}  #Storage 
            "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" {$connString = $setting.value} #Diagnostics
        } 

        #Here you can do whatever with the value.
        $connString
    } 
} 
Другие вопросы по тегам