Если вам нужно отправить информацию из PowerShell в файл CSV, вам поможет команда Export-CSV. Эта команда позволяет администраторам сэкономить много времени, переводя свободный текст в структурированный формат. Вместо того, чтобы возиться с Excel, мы можем использовать PowerShell для создания файлов CSV.
Вы можете создавать файлы CSV для создания отчетов, отправки в базы данных и многого другого из любого объекта PowerShell с помощью команды Export-Csv.
Формат CSV представляет собой простой текстовый файл, в котором строки разделены запятыми. Поскольку это просто текстовый файл, мы теоретически могли бы использовать общую команду для работы с текстовыми файлами, такую как Set-Content, чтобы выполнить задачу. Однако для использования общей команды нам нужно было бы самостоятельно создавать необходимую структуру CSV. Зачем делать это, когда у нас уже есть команда для экспорта CSV – Export-Csv, которая отправляет вывод в файл?
Файлы CSV требуют определенной структуры. Возможность этой команды понимать, читать и преобразовывать информацию в файлы CSV делает эту команду PowerShell настолько удобной.
Управление и отчетность в Active Directory, Exchange и Microsoft 365 с помощью ManageEngine ADManager Plus. Скачайте бесплатную пробную версию!
Объекты -eq Строки CSV
Export-Csv
cmdlet имеет одну цель: сохранить объекты PowerShell в файл CSV.
Предположим, у вас есть объект с двумя свойствами, называемыми foo
и bar
. Каждое из этих свойств имеет соответствующие значения 1
и 2
. Когда вы отправляете этот объект в Export-Csv
, он создает файл CSV с двумя столбцами и одной строкой. Затем вы можете импортировать содержимое CSV и проверить, как оно выглядит.
PowerShell в основном обрабатывает объект в памяти и файл CSV одинаково! Кроме того, мои заголовки столбцов должны быть заголовками. Экспорт объектов с использованием этой командлета подобен сохранению объекта в файловой системе. С помощью общей текстовой команды PowerShell Get-Content
мы можем проверить исходный текст, чтобы увидеть, что была экспортирована команда Export-Csv
.
Обратите внимание, что команда использует двойные кавычки вокруг каждой записи строки. Это позволяет включать поля со пробелами.
Полезные параметры Export-CSV
В Windows PowerShell 5.1 команда Export-CSV выводит тип объекта, который создал файл CSV. Если вы не хотите видеть эту строку, популярным параметром является NoTypeInformation
, который полностью удаляет эту строку.
Если вы работаете с различными файлами CSV или источниками данных, вы можете узнать на практике, что Export-CSV перезаписывает существующие файлы. Но это не проблема, если вы используете параметр Append. Параметр Append позволяет добавлять строки в CSV, а не перезаписывать существующий файл.
Еще один полезный параметр – Delimiter. Иногда вам может понадобиться создать файл CSV, который не использует обычный разделитель списка (запятую) для разделения полей. Вместо этого, возможно, вам нужно создать файл с большим количеством данных, в котором в качестве разделителей используются табуляции или даже точки с запятыми. Командлет Export-Csv в PowerShell может помочь нам с этим, указав любой разделитель, который нам нужен.
Работа с кавычками
При создании строк CSV Export-Csv заключает все поля в кавычки. В некоторых ситуациях это может быть нежелательно. К сожалению, нет способа предотвратить это. Но с помощью немного большего кода вы можете добиться этого.
Ниже вы можете увидеть пример создания файла CSV. Затем Get-Content читает сырой текстовый файл, заменяет все двойные кавычки в памяти на пустоту. Затем Set-Content записывает эту информацию из памяти обратно на диск.
Управляйте и отчетность по Active Directory, Exchange и Microsoft 365 с помощью ManageEngine ADManager Plus. Скачать бесплатную пробную версию!
Сводка
Команда Export-Csv
– это простой, но крайне полезный инструмент для управления данными в формате CSV. Она может понимать структуру файла данных CSV и преобразовывать объекты PowerShell в строки CSV.
I’m not about to go back to batch, or VBScript where creating a CSV file from an existing object required instantiating a FileSystemObject, creating a loop and a bunch of Write()
methods!
Эта команда – еще одна причина начать писать код PowerShell уже сегодня!