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-Key: 386370

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

Printed on: April 25, 2024 at 12:04 o'clock

Mitglied: 137084
Solution 137084 Sep 13, 2018 updated at 13:39:06 (UTC)
Goto Top
Backslashes verdoppeln
(Get-Content -Path Pfad_zur_Textdatei -raw).replace("\","\\")  | ConvertFrom-StringData  
Member: derhoeppi
derhoeppi Sep 14, 2018 at 06:42:51 (UTC)
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
Mitglied: 137084
137084 Sep 14, 2018 at 06:45:25 (UTC)
Goto Top
Invoke-Expression ist dein Freund
Member: colinardo
colinardo Sep 14, 2018 updated at 07:13:02 (UTC)
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