Попытка нового ответа на старый вопрос.
Я думаю, что современный ответ будет: не делай этого. PowerShell - это оболочка. Обычным способом передачи информации между частями оболочки являются переменные оболочки. Для PowerShell это будет выглядеть так:
$global:MyComponent_MySetting = '12'
# i.e.
$PSDefaultParameterValues
$ErrorActionPreference
Если предполагается, что настройки будут наследоваться через границы процессов, соглашение заключается в использовании переменных среды. Я распространяю это на настройки, которые пересекают границы C # / PowerShell. Пара примеров:
$env:PATH
$env:PSModulePath
Если вы считаете, что это анти-шаблон для .NET, вы можете пересмотреть его. Это норма для приложений, размещаемых PAAS, и она станет новым значением по умолчанию для ASP.NET, работающего на оптимизированной для сервера среде CLR (ASP.NET v5).
См. https://github.com/JabbR/JabbRv2/blob/dev/src/JabbR/Startup.cs#L21
Примечание: на момент написания статьи я ссылаюсь на .AddEnvironmentVariables()
Я несколько раз возвращался к этому вопросу, в том числе задавал его сам. Я хотел сделать ставку на то, чтобы сказать, что PowerShell не работает с <appSettings>
. ИМО, в этом отношении гораздо лучше охватить аспект оболочки PS, чем аспект .NET.
Если вам нужна сложная конфигурация, возьмите строку JSON. POSH v3 + имеет ConvertFrom-JSON встроенный. Если все в вашем процессе использует одну и ту же сложную конфигурацию, поместите ее в файл .json и укажите на этот файл из переменной среды.
Если одного файла недостаточно, существуют хорошо зарекомендовавшие себя решения, такие как шаблон PATH
, разрешение GIT .gitignore или ASP.NET web.config * разрешение 1030 * (которое Я не буду повторяться здесь.