
Вы можете использовать команду Экспорт-CSV команда в PowerShell для экспорта массивов данных в CSV-файлы. В этой статье мы покажем вам, как экспортировать данные в CSV-файл и как добавлять дополнительные строки или столбцы.
Следующая команда экспортирует список служб Windows в CSV-файл:
Get-Service |select-object Name,DisplayName,Status | Export-CSV "C:\PS\services.CSV" -NoTypeInformation -Encoding UTF8
Теперь вы можете открыть полученный CSV-файл в любом текстовом редакторе. Как видите, первая строка содержит имена столбцов (атрибуты объекта PowerShell), которые мы выбрали с помощью команды Select-Object, а затем мы можем видеть данные построчно, разделенные запятыми.
По умолчанию в 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
(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
Вы также можете использовать следующие дополнительные параметры экспорта 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 или других программах.
Команда Export-CSV часто используется для создания различных табличных экспортов и отчетов. Ниже приведены примеры полезных отчетов системного администратора, которые можно создать с помощью команды Export-CSV:
- Экспорт списка компьютеров в AD с помощью команды Get-ADComputer;
- Извлечение информации о пользователях из Active Directory с помощью команды Get-ADUser;
- Поиск неактивных пользователей или компьютеров в домене AD
- Получение журналов регистрации пользователей из Azure AD;
- Экспорт истории соединений RDP (журналы);
- Сценарий для проверки статуса активации Windows на компьютерах в домене.
Import-CSV
команду для чтения (импорта) данных из CSV-файла в PowerShell.