
Я пытаюсь разделить txt doc в Powershell на основе новой строки. Скрипт работал нормально при разделении по ',' но теперь я изменил его, чтобы использовать [Environment]::NewLine, и он, похоже, выбирает только последнюю строку.
Это часть скрипта, которая должна быть разделена символом новой строки:
Get-Content C:\Bindings.txt | Foreach-Object{
$hostHeaders = $_.Split([Environment]::NewLine,
[StringSplitOptions]::RemoveEmptyEntries)
}
Документ .txt выглядит так:
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
Есть идеи, как сделать так, чтобы он разделялся на новой строке, а не только отображалась последняя строка, или я что-то упускаю?
решение1
У меня есть для вас 3 метода
Я подготовил файл .txt
(Get-Content C:\temp\Bindings.txt)
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
А теперь 3 метода
(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)
результат такой
http:*:80:test.com
http:*:80:test2.com
http:*:80:test1.com
решение2
Вам не нужно ничего делать. Поведение Get-Content по умолчанию с текстовым файлом — разбить его на новой строке и вернуть массив строк:
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
---- ---------- ----------
...