Текст в 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 как для заголовка "Журнал", так и для строк сведений.