Hat jemand herausgefunden, wie PowerShell app.config
Dateien zu verwenden? Ich habe ein paar .NET DLLs, die ich gerne in einem meiner Skripte verwenden würde, aber sie erwarten, dass ihre eigenen Konfigurationsabschnitte in app.config
/web.config
vorhanden sind.PowerShell App.Config
Antwort
Querverweise mit diesem Thread, der mich mit der gleichen Frage geholfen: Subsonic Access To App.Config Connection Strings From Referenced DLL in Powershell Script
Ich habe folgendes mein Skript, bevor die DLL aufrufen, die Konfigurationseinstellungen benötigt, wobei $ configpath die Lage der ist Datei, die ich laden möchte:
Ich vermute, dass die Einstellungen in Powershell.exe.config im Powershell-Verzeichnis sein müssten, aber das scheint ein schlechter Weg zu sein, Dinge zu tun.
Sie können ConfigurationManager.OpenMappedExeConfiguration verwenden, um eine Konfigurationsdatei basierend auf dem ausführenden DLL-Namen anstelle der Anwendungs-Exe zu öffnen. Dies würde jedoch offensichtlich Änderungen an den DLLs erfordern.
Ich würde stark eine solche Lösung nicht verwenden. Wickeln Sie es in eine Konsolenanwendung ein, die Daten als JSON in STDOUT oder in die ASP.NET-WebAPI-App schreibt. Die Wahl zwischen Konsole und API hängt vom Hosting und der Sicherheit ab. – yzorg
Ein weiterer Grund, dies NICHT zu verwenden: PowerShell wird mit dem Betriebssystem und powershell.exe aktualisiert.config ist eine geschützte OS-Datei, was bedeutet, dass sie nicht einfach mit Notepad bearbeitet werden kann. – yzorg
Versuch eine neue Antwort auf eine alte Frage.
Ich denke, die moderne Antwort wäre: Tu das nicht. PowerShell ist eine Shell. Die normale Art, Informationen zwischen Teilen der Shell weiterzuleiten, sind Shell-Variablen. Für Powershell das wäre wie folgt aussehen:
$global:MyComponent_MySetting = '12'
# i.e.
$PSDefaultParameterValues
$ErrorActionPreference
Wenn Einstellungen erwartet wird, über Prozesse Grenzen der Konvention Umgebungsvariablen vererbt werden verwenden. Ich erweitere dies auf Einstellungen, die die C#/PowerShell-Grenze überschreiten. Ein paar Beispiele:
$env:PATH
$env:PSModulePath
Wenn Sie denken, das ein Anti-Muster für .NET ist möchten Sie vielleicht zu überdenken. Dies ist die Norm für PAAS-gehostete Anwendungen und wird der neue Standard für ASP.NET sein, der auf der Server-optimierten CLR (ASP.NET v5) ausgeführt wird.
Siehe https://github.com/JabbR/JabbRv2/blob/dev/src/JabbR/Startup.cs#L21
Hinweis: zum Zeitpunkt des Schreibens ich die Verknüpfung zu .AddEnvironmentVariables()
habe ich diese Frage ein paar Mal neu aufgelegt, es selbst einschließlich fragen. Ich wollte einen Anteil am Boden setzen, um zu sagen, PowerShell-Zeug funktioniert nicht gut mit <appSettings>
. IMO ist es viel besser, den Shell-Aspekt von PS über den .NET-Aspekt in dieser Hinsicht zu umfassen.
Wenn Sie komplexe Konfiguration benötigen, nehmen Sie eine JSON-Zeichenfolge. POSH v3 + hat ConvertFrom-JSON eingebaut. Wenn alles in Ihrem Prozess die gleiche komplexe Konfiguration verwendet, legen Sie es in eine .json-Datei und zeigen Sie auf diese Datei von einer Umgebungsvariablen.
Wenn eine einzelne Datei dort nicht ausreicht sind gut etablierte Lösungen wie das PATH
Muster, .gitignore GIT Auflösung oder ASP.NET web.config Auflösung (die ich hier nicht wiederholen).
"* tu das nicht. *" - sicher, und schätze die Zeit, die du in diese Antwort gesteckt hast. Aber Umgebungsvariablen usw. funktionieren nicht mit diesen Legacy-Assemblys. Sie erwarten, dass sie ihre Konfigurationen aus der 'AppSettings'-Sammlung lesen können. – Kev
@Kev Dann sollten diese Assemblies wirklich nicht in einem PowerShell-Kontext verwendet werden. Möglicherweise müssen Sie PowerShell selbst hosten. Siehe "Einbetten von PowerShell", z. B. die "Package Manager Console" von Visual Studio. – yzorg
- 1. Powershell-Aufruf .NET-Assembly mit App.config
- 2. Wie lese/schreibe ich App.config-Einstellungen mit PowerShell?
- 3. app.config Verschlüsselung
- 4. app.config globalisation
- 5. app.config Verrücktheit
- 6. Customizing app.config
- 7. App.config Problem
- 8. Laden von app.config in die AppDomain
- 9. ersetzen App.Config Artikel Knotenwert in Power
- 10. Reload app.config mit Nunit
- 11. App.Config funktioniert nicht
- 12. C# app.config Format Problem
- 13. App.config - verschlüsselten Abschnitt Fehler:
- 14. Verschlüsselende Klassenbibliothek app.config Datei
- 15. Einstellungen von App.Config lesen
- 16. Einstellungsdatei vs app.config
- 17. App.config Verbindungszeichenfolge Schutzfehler
- 18. C# Datei app.config
- 19. App.Config gibt null zurück
- 20. Mehrere App.Config-Dateien
- 21. Wo setzt mono app.config
- 22. App.config-Dateien in XBAP
- 23. App.config vs. INI-Dateien
- 24. Flucht & in App.config
- 25. VB.NET Verbindungszeichenfolge (Web.Config, App.Config)
- 26. Clickonce und app.config
- 27. Verschachtelte app.config (web.config) -Dateien
- 28. .net dynamisch aktualisieren app.config
- 29. Was ist app.config für?
- 30. Variablen in app.config definieren
Wow ... eine Antwort nach all den Jahren :). Danke, ich gebe das eine Chance. – Kev
+1 Vielen Dank! Überall im Netz ist die einzige Lösung, die für dieses Problem erwähnt wird, "ConfigurationManager.OpenMappedExeConfiguration" und keine für ein Szenario, in dem wir keine Kontrolle über die referenzierte Assembly haben! Das funktioniert perfekt für meinen Fall. – fozylet
Dieser Code hat nicht funktioniert, ich endete mit Robert Mooney's Lösung: http://StackOverflow.com/questions/16216736/loading-app-config-into-the-appdomain#answer-33290175 –