Вы выводите в файл CSV с Out-File
.Это неверно;вам нужно Export-Csv
.Вы также захотите сбросить вывод даты в последней строке, если вам нужен легальный CSV-документ.(Вы можете запустить Get-Item MyFile.csv | Format-Table Name, CreationTime
, чтобы получить эту информацию позже; файловая система предоставляет вам некоторую информацию о дате бесплатно.)
Само по себе это полное решение.Ваш вывод не будет усечен.Но я хотел бы объяснить это различие, если можно.
У Powershell есть некоторые стандартные действия, которые попадают в ваш фрагмент кода.Out-File
принимает строковое содержимое, но вы передаете объекты, поэтому PS будет использовать свой форматтер по умолчанию.Когда первый элемент в конвейере имеет 4 или менее видимых свойств, это будет Format-Table
, в противном случае Format-List
.
Format-Table
имеет переключатель -Wrap
, который вызывает обтекание переполненного содержимого вместо усечения,Иногда использования -AutoSize
также достаточно для настройки ширины столбцов, но это поможет вам справиться только с проблемой усечения.Format-List
будет всегда переноситься.
Если вам нужно только одно свойство и вы можете позволить себе потерять заголовок столбца, попробуйте набрать Select-Object -ExpandProperty Item
.
Как я надеюсь, теперь все ясно.эти команды форматирования сглаживают структурированные данные в текст, хотя и форматированный текст.Это всегда даст вам потерю верности, а также затруднит дальнейшие манипуляции с данными.Если вместо этого вы используете Export-Csv
, вы можете позже запустить Import-Csv
, чтобы вернуть данные в виде структурированного вывода.Кроме того, вы можете открыть в Excel и т. Д.
Предупреждение: Export-Csv
плохо обрабатывает кавычки.Если это становится проблемой, попробуйте Export-CliXml
, который использует специфический для PS диалект XML и обеспечивает наивысшую точность, которую вы можете получить (если вы не готовы приложить много работы!) Естественно, импортный аналогэто команда Import-CliXml
.
Последний совет для Export-Csv
: часто вам не нужна информация заголовка, поэтому используйте ее с переключателем -NoTypeInformation
.