$Userinput.Text
ожидает одну строку , даже если эта строка содержит несколько строк.Поэтому используйте Get-Content -Raw
(PSv3 +) для чтения содержимого файла в виде одной строки:
$Userinput.Text = Get-Content -Raw -LiteralPath C:\temp\userinput.txt
Что касается того, что вы пытались : Get-Content
без -Raw
возвращает массив строк, причем каждая строка по умолчанию представляет одну строку ввода, где любой из следующих стилей новой строки распознается в качестве разделителей строк в любой комбинации: "`r`n"
(CRLF), "`n"
(LF), "`r"
(CR).
Когда PowerShell приводит массив в строку, он объединяет строковое представление отдельных элементов с одним пробелом между элементами, что объясняет дополнительные пробелы, которые вы видели.
Причина, по которой вы увидели тоже переносы строк - это извращение того, как -Delimiter
работает в Windows PowerShell (проблема, которая с тех пор была исправлена в PowerShell Core ): указанный разделитель (разделитель) равен включил в каждый элемент, так что -Delimiter "`r`n"
не просто не нужен для возврата массива строк (из-за поведения по умолчанию Get-Content
), он фактически включает "`r`n"
в конце каждой возвращаемой строки.