Out-File -append в Powershell не создает новую строку и разбивает строку на символы

Я пытаюсь понять какое-то странное поведение с помощью этого командлета.

Если я использую "Out-File -append Filename.txt" в текстовом файле, который я создал и ввел текст, через контекстное меню Windows, строка добавится к последней строке в этом файле, как серию разделенных пробелов символы.

Итак:

"This is a test" | out-file -append textfile.txt

Будет производить: T h я s я s t t s t t

Это не произойдет, если out файл создает файл, или если в текстовом файле нет текста перед добавлением. Почему это происходит?

Я также хочу отметить, что повторение команды будет просто добавляться таким же образом в одну строку. Я предполагаю, что он не распознает терминатор прерывания строки или прерывания строки или что-то из-за изменения кодировки?

Ответ 1

Out-File по умолчанию используется кодировка Юникода, поэтому вы видите свое поведение. Используйте -Encoding Ascii, чтобы изменить это поведение. В вашем случае

Out-File -Encoding Ascii -append textfile.txt. 

Add-Content использует Ascii, а также добавляет по умолчанию.

"This is a test" | Add-Content textfile.txt.

Что касается отсутствия новой строки: вы не отправили новую строку, чтобы она не записывала файл в файл.

Ответ 2

Add-Content является ASCII по умолчанию и добавляет новую строку, однако Add-Content также вызывает проблемы с заблокированными файлами.