Анализ файла 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
}
}