derhoeppi
Goto Top

Powershell Problem mit Get-Content

Hallo,

ich habe eine Textdatei die mehrere Zeilen nach dem Muster "Bezeichnung=Wert". enthält. Mit dem Einlesen der Textdatei werden aus diesen Zeilen globale Variablen erstellt. Das funktioniert soweit ganz gut, hat aber scheinbar sein Grenzen.

Der eigentliche Import erfolgt folgendermaßen:

$VarContent = Get-Content -Path Pfad_zur_Textdatei -raw | ConvertFrom-StringData

Nun habe ich in der Textdatei eine Zeile:
"ConfigFile=$env:APPDATA\Testdatei.conf"

Wenn ich das Einlese hat die Powershell Probleme mit der Auflösung. Ich habe gelesen das die Methode ConvertFrom-StringData die Backslahs escaped. Gibt es eine Möglichkeit solchen Inhalt trotzdem korrekt einzulesen?

Gruß
derhoeppi

Content-ID: 386370

Url: https://administrator.de/contentid/386370

Ausgedruckt am: 24.11.2024 um 03:11 Uhr

137084
Lösung 137084 13.09.2018 aktualisiert um 15:39:06 Uhr
Goto Top
Backslashes verdoppeln
(Get-Content -Path Pfad_zur_Textdatei -raw).replace("\","\\")  | ConvertFrom-StringData  
derhoeppi
derhoeppi 14.09.2018 um 08:42:51 Uhr
Goto Top
Hallo,
danke für den Tipp. Hast du vielleicht noch einen Tipp für mich, wie ich aus dem eingelesenen Content $env:APPDATA\Test.config, der ja als String eingelesen wird, dieses wieder als Umgebungsvariable verfügbar machen kann?

Gruß
derhoeppi
137084
137084 14.09.2018 um 08:45:25 Uhr
Goto Top
Invoke-Expression ist dein Freund
colinardo
colinardo 14.09.2018 aktualisiert um 09:13:02 Uhr
Goto Top
Zitat von @derhoeppi:

Hallo,
danke für den Tipp. Hast du vielleicht noch einen Tipp für mich, wie ich aus dem eingelesenen Content $env:APPDATA\Test.config, der ja als String eingelesen wird, dieses wieder als Umgebungsvariable verfügbar machen kann?
Servus @derhoeppi ,
((Get-Content -Path 'Pfad_zur_Textdatei' -raw).replace("\","\\")  | ConvertFrom-StringData).GetEnumerator() | %{$_.Value = $ExecutionContext.InvokeCommand.ExpandString($_.Value);$_}  
Grüße Uwe