Export-CSV: вывод данных в CSV-файл с помощью PowerShell

Вы можете использовать команду Экспорт-CSV команда в PowerShell для экспорта массивов данных в CSV-файлы. В этой статье мы покажем вам, как экспортировать данные в CSV-файл и как добавлять дополнительные строки или столбцы.

CSV-файл — это формат обычного текстового файла, используемый для хранения табличных данных, где значения разделены специальным символом (разделителем). Команда Export-CSV преобразует полученный объект PowerShell в список строк, разделенных запятыми, и сохраняет строки в указанном файле.

Следующая команда экспортирует список служб Windows в CSV-файл:

Get-Service |select-object Name,DisplayName,Status | Export-CSV "C:\PS\services.CSV" -NoTypeInformation -Encoding UTF8

Теперь вы можете открыть полученный CSV-файл в любом текстовом редакторе. Как видите, первая строка содержит имена столбцов (атрибуты объекта PowerShell), которые мы выбрали с помощью команды Select-Object, а затем мы можем видеть данные построчно, разделенные запятыми.

формат csv-файла с делиметромформат файла csv с делиметром

По умолчанию в CSV в качестве разделителя (делимитатора) используется запятая. Вы можете указать другой символ-разделитель CSV (например, точку с запятой, двоеточие и т. д.) с помощью команды —Разделитель вариант.

Например, давайте используем точку с запятой в качестве разделителя:

Get-Service | Export-CSV "C:\PS\services.CSV" -NoTypeInformation -Encoding UTF8 -Delimiter ";"

Вы можете использовать разделитель в зависимости от региональных настроек Windows. Используйте -UseCulture параметр для этого.

Get-Process | Export-Csv "c:\ps\process.csv" -UseCulture

Символ разделителя по умолчанию можно также узнать из региональных настроек Windows:

(Get-Culture).TextInfo.ListSeparator

По умолчанию команда Export-CSV создает новый CSV-файл (если файл уже существует, он перезаписывается/заменяется новым). Для создания нового CSV-файла используйте -Append опция, если вам нужно добавить новые строки в существующий CSV-файл

Например, вы хотите запланировать сценарий PowerShell, который проверяет свободное дисковое пространство и добавляет текущее значение в CSV-файл:

$cur_time=get-date -Format u
$freedisksize=Get-CimInstance -Class Win32_LogicalDisk |Where-Object {$_.DeviceID -eq "C:"} |select DeviceID,FreeSpace

Теперь вам нужно добавить текущую дату в таблицу (объект) в качестве одного из полей (атрибутов):

$freedisksize| add-member -membertype NoteProperty -name Date -value $cur_time

Экспортируйте объект PowerShell в CSV-файл:

$freedisksize| Export-Csv -Path C:\ps\freespace.csv -Delimiter ";" -NoTypeInformation -Append

Powershell Append CSV filePowershell Append CSV file

Вы также можете использовать следующие дополнительные параметры экспорта CSV:

  • -Кодировка — позволяет задать кодировку CSV-файла (по умолчанию используется utf8NOBOM). В большинстве случаев я указываю здесь UTF8;
  • -Force — позволяет перезаписать файл, доступный только для чтения;
  • -NoClobber — Если файл уже существует, не перезаписывайте его;
  • -Заголовок — добавляет заголовок в CSV-файл (если он отсутствует);
  • -IncludeTypeInformation/-NoTypeInformation — добавить или пропустить #TYPE строка с данными о типе объекта в заголовке файла (например, #TYPE System.Diagnostics.Process или #TYPE System.Service.ServiceController). В PowerShell 6+ информация о ТИПе заголовка по умолчанию не отображается;
  • -UseQuotes (введено в PowerShell Core 7.x) — нужно ли заключать значения в кавычки или нет (AsNeeded/ Always (по умолчанию)/Never)

Затем вы можете обработать полученный CSV-файл в Excel или других программах.

Вы можете записывать данные непосредственно в файл Excel из PowerShell.

Команда Export-CSV часто используется для создания различных табличных экспортов и отчетов. Ниже приведены примеры полезных отчетов системного администратора, которые можно создать с помощью команды Export-CSV:

  • Экспорт списка компьютеров в AD с помощью команды Get-ADComputer;
  • Извлечение информации о пользователях из Active Directory с помощью команды Get-ADUser;
  • Поиск неактивных пользователей или компьютеров в домене AD
  • Получение журналов регистрации пользователей из Azure AD;
  • Экспорт истории соединений RDP (журналы);
  • Сценарий для проверки статуса активации Windows на компьютерах в домене.
Вы можете использовать Import-CSV команду для чтения (импорта) данных из CSV-файла в PowerShell.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *