
Я столкнулся с ситуацией, которую не могу объяснить и понять. Я создал текстовый файл, выполнив следующую команду в командной строке:certutil -v -template > documents\templates.txt
Поскольку мне нужно было сделать это на шести серверах и различать файлы по имени, я решил использовать powershell и использовать переменную $env:COMPUTERNAME, чтобы мне не приходилось изменять команду на каждом сервере. Поэтому я открыл PS ISE и набрал:certutil -v -template | Out-File $env:USERPROFILE\Documents\$env:COMPUTERNAME-templates.txt
Я заметил, что файл, сгенерированный powershell, был ровно в два раза больше. Когда я попытался запустить команду fc в командной строке, чтобы сравнить файлы, результатом стало то, что файлы слишком различались. Когда я поместил содержимое этих файлов в Excel (один файл в столбец A, второй в столбец K) и просмотрел на предмет различий, просто используя глаза при прокрутке вниз, я не заметил никаких различий, и оба файла имели одинаковое количество строк. Когда я создал пустой текстовый файл на своем ноутбуке и скопировал в него содержимое файла powershell, после сохранения он имел тот же размер, что и файл командной строки.
Я имею в виду, что разница в размере составляет 200 кБ, так что это не проблема, но powershell создал файл, который вдвое больше размера командной строки. В чем причина? Почему файл txt, сгенерированный Powershell, вдвое больше, чем при генерации командной строкой? В случае больших файлов это может быть проблемой.
решение1
Я считаю, что PowerShell создает файл на основе UTF-16, а не файл на основе UTF-8.
Поэтому в PowerShell каждый символ на самом деле занимает 2 байта.
Я сделалсохранить какв блокноте и сохраните его как UTF-8, размер файла составит 1/2.