
Ich versuche, ein TXT-Dokument in Powershell basierend auf einer neuen Zeile aufzuteilen. Das Skript funktionierte einwandfrei, als es anhand eines ',' aufgeteilt wurde. Nachdem ich es jedoch geändert habe, um [Environment]::NewLine zu verwenden, scheint es nur die letzte Zeile aufzunehmen.
Dies ist der Teil des Skripts, der durch Zeilenumbruch aufgeteilt werden sollte:
Get-Content C:\Bindings.txt | Foreach-Object{
$hostHeaders = $_.Split([Environment]::NewLine,
[StringSplitOptions]::RemoveEmptyEntries)
}
Das TXT-Dokument sieht folgendermaßen aus:
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Irgendwelche Ideen, wie ich es in der neuen Zeile aufteilen kann und nicht nur die letzte Zeile angezeigt bekomme, oder übersehe ich etwas?
Antwort1
Ich habe 3 Methoden für Sie
Ich habe eine TXT-Datei vorbereitet
(Get-Content C:\temp\Bindings.txt)
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Und jetzt 3 Methoden
(Get-Content C:\temp\Bindings.txt) -split"`r`n"
(Get-Content C:\temp\Bindings.txt) -split "[Environment]::NewLine"
(Get-Content C:\temp\Bindings.txt).Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries)
das Ergebnis ist so
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Antwort2
Sie müssen nichts tun. Das Standardverhalten von Get-Content bei einer Textdatei besteht darin, in der neuen Zeile zu teilen und ein Array von Zeichenfolgen zurückzugeben:
PS C:\...\Can Delete 3>Get-Content data.txt
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
PS C:\...\Can Delete 3>$object = Get-Content data.txt
PS C:\...\Can Delete 3>$object.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS C:\...\Can Delete 3>$object.count
3
PS C:\...\Can Delete 3>$object[0]
http:*:80:test.com
PS C:\...\Can Delete 3>$Object | Get-Member
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
...