Текст в Power-Shell Out-File Out-File неверен

Когда я использую это:

"$LogTime $CurrentDate Invalid Archive Grouping selected. You selected '$ArchiveGrouping'" | Out-File $LogFile -Append -Force 

Чтобы записать в файл, сгенерированный с помощью этого кода:

$Logdate = Get-Date
$Logname = $Logdate.ToString("yyyyMMdd") + ".txt"
Add-Content -Path C:\ArchiveStorage\$Logname "Log" -force
$LogFile = "C:\ArchiveStorage\$Logname"

Текст в файле выглядит странно, выглядит так:

если я изменю код, чтобы просто записать в существующий файл, например:

$LogFile = "C:\ArchiveStorage\Log.txt"

Текстовый файл выглядит так:

почему он делает пробелы и все такое случайное дерьмо?

2 ответа

Решение

Вы были поражены двухбайтовым Unicode. Когда, скажем, письмо A записывается в файл, обычно это одно байтовое значение 0x41, В двухбайтовом Unicode значение байта для A является 0x0041 или же 0x4100 в зависимости от порядка

Когда Блокнот открывает файл без метки порядка байтов в Юникоде, он принимает на себя все лишние 00 в содержимом файла есть пробелы. Вот почему вы видите w e r i d s p a c i n g,

Для исправления попробуйте использовать -Encoding ASCII параметр с Add-Content,

Записи "Журнала" выглядят по-разному, потому что они были написаны с использованием Add-Content, который использует кодировку ASCII по умолчанию, а Out-File использует кодировку Unicode по умолчанию.

Либо укажите тип кодировки в Out-File, либо переключитесь на использование Add-Content как для заголовка "Журнал", так и для строк сведений.

Другие вопросы по тегам