Как настроить изменяемые строки подключения в двоичном модуле Powershell?
У меня есть модуль PowerShell, который я написал на C# и который использует Entity Framework для доступа к серверу MS SQL. В моем проекте я создал файл module.psd1. В этом файле указывается скрипт (LoadAppConfig.ps1) для запуска перед загрузкой dll. Сценарий читает app.config и добавляет строку подключения в текущий домен приложения.
Есть лучший способ сделать это? Я знаю, что некоторые модули могут принимать параметры при загрузке, но я не смог найти способ реализовать это в C#. Или есть способ встроить в модуль значение по умолчанию, которое можно изменить с помощью командлета? Я хотел бы избежать перекомпиляции модуля для изменения источников данных, если это возможно.
LoadAppConfig.ps1
Add-Type -AssemblyName System.Configuration
$path = $PSScriptRoot
$configPath = Join-Path -Path $path -ChildPath "App.Config"
$connectionstrings = [System.Configuration.ConfigurationManager]::ConnectionStrings
$collection = [System.Configuration.ConfigurationElementCollection]
$field = $collection.GetField(
"bReadOnly",
[System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Instance)
$field.SetValue($connectionstrings, $false)
[xml]$xml = gc $configPath
$name = $xml.configuration.connectionStrings.add.name
$newconnectionstring = $xml.configuration.connectionStrings.add.connectionString
$provider = "System.Data.EntityClient"
if ($connectionstrings.name -notcontains $name)
{
$Entities = [System.Configuration.ConnectionStringSettings]::new($name, $newconnectionstring, $provider)
$connectionstrings.add($Entities)
}