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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 386370
Url: https://administrator.de/contentid/386370
Ausgedruckt am: 24.11.2024 um 03:11 Uhr
4 Kommentare
Neuester Kommentar
Backslashes verdoppeln
(Get-Content -Path Pfad_zur_Textdatei -raw).replace("\","\\") | ConvertFrom-StringData
Invoke-Expression ist dein Freund
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 ,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?
((Get-Content -Path 'Pfad_zur_Textdatei' -raw).replace("\","\\") | ConvertFrom-StringData).GetEnumerator() | %{$_.Value = $ExecutionContext.InvokeCommand.ExpandString($_.Value);$_}