Export-Csv
Преобразует объекты в ряд строк, разделенных символами (CSV), и сохраняет строки в файл.
Синтаксис
Export-Csv
[[-Path] <string>]
[[-Delimiter] <char>]
-InputObject <psobject>
[-LiteralPath <string>]
[-Force]
[-NoClobber]
[-Encoding <string>]
[-Append]
[-NoTypeInformation]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Csv
[[-Path] <string>]
-InputObject <psobject>
[-LiteralPath <string>]
[-Force]
[-NoClobber]
[-Encoding <string>]
[-Append]
[-UseCulture]
[-NoTypeInformation]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет создает CSV-файл объектов, которые вы отправляете Export-CSV
. Каждый объект представляет собой строку, содержащую разделенный символами список значений свойств объекта. Командлет можно использовать Export-CSV
для создания электронных таблиц и совместного использования данных с программами, принимаюющими CSV-файлы в качестве входных данных.
Не отформатируйте объекты перед отправкой Export-CSV
в командлет. Если Export-CSV
получает отформатированные объекты, CSV-файл содержит свойства формата, а не свойства объекта. Чтобы экспортировать только выбранные свойства объекта, используйте Select-Object
командлет.
Примеры
Пример 1. Экспорт свойств процесса в CSV-файл
В этом примере выбираются объекты Process с определенными свойствами, экспортируются объекты в CSV-файл.
Get-Process -Name WmiPrvSE |
Select-Object -Property BasePriority,Id,SessionId,WorkingSet |
Export-Csv -Path .\WmiData.csv -NoTypeInformation
Import-Csv -Path .\WmiData.csv
BasePriority Id SessionId WorkingSet
------------ -- --------- ----------
8 976 0 20267008
8 2292 0 36786176
8 3816 0 30351360
8 8604 0 15011840
8 10008 0 8830976
8 11764 0 14237696
8 54632 0 9502720
Командлет Get-Process
получает объекты Process . Параметр Name фильтрует выходные данные, чтобы включить только объекты процесса WmiPrvSE. Объекты процесса отправляются по конвейеру командлету Select-Object
. Select-Object
использует параметр Property для выбора подмножества свойств объекта процесса. Объекты процесса отправляются по конвейеру командлету Export-Csv
. Export-Csv
преобразует объекты процесса в ряд строк CSV. Параметр Path указывает, что WmiData.csv
файл сохраняется в текущем каталоге. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6. Командлет Import-Csv
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 2. Экспорт процессов в файл с разделителями-запятыми
В этом примере возвращаются объекты Process и экспортируются объекты в CSV-файл.
Get-Process | Export-Csv -Path .\Processes.csv -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...
Командлет Get-Process
получает объекты Process . Объекты процесса отправляются по конвейеру командлету Export-Csv
. Export-Csv
преобразует объекты процесса в ряд строк CSV. Параметр Path указывает, что Processes.csv
файл сохраняется в текущем каталоге. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6. Командлет Get-Content
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 3. Экспорт процессов в файл с разделителями с запятой
Этот пример получает объекты Process и экспортирует объекты в файл с точкой с запятой.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter ';' -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...
Командлет Get-Process
получает объекты Process . Объекты процесса отправляются по конвейеру командлету Export-Csv
. Export-Csv
преобразует объекты процесса в ряд строк CSV. Параметр Path указывает, что Processes.csv
файл сохраняется в текущем каталоге. Параметр разделителя задает точку с запятой для разделения строковых значений. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6. Командлет Get-Content
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 4. Экспорт процессов с помощью разделителя списка текущего языка и региональных параметров
Этот пример получает объекты Process и экспортирует объекты в файл. Разделитель — это разделитель списка текущего языка и региональных параметров.
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...
Командлет Get-Culture
использует вложенные свойства TextInfo и ListSeparator и отображает разделитель списка по умолчанию текущего языка и региональных параметров. Командлет Get-Process
получает объекты Process . Объекты процесса отправляются по конвейеру командлету Export-Csv
. Export-Csv
преобразует объекты процесса в ряд строк CSV. Параметр Path указывает, что Processes.csv
файл сохраняется в текущем каталоге. Параметр UseCulture использует разделитель списка по умолчанию текущего языка и региональных параметров в качестве разделителя. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6. Командлет Get-Content
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 5. Экспорт процессов с сведениями о типе
В этом примере объясняется, как включить сведения о заголовке #TYPE в CSV-файл. Заголовок #TYPE используется по умолчанию в версиях до PowerShell 6.0.
Get-Process | Export-Csv -Path .\Processes.csv
Get-Content -Path .\Processes.csv
#TYPE System.Diagnostics.Process
"Name","SI","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","507","2203595001856","35139584","20934656","29504", ...
Командлет Get-Process
получает объекты Process . Объекты процесса отправляются по конвейеру командлету Export-Csv
. Export-Csv
преобразует объекты процесса в ряд строк CSV.
Параметр Path указывает, что Processes.csv
файл сохраняется в текущем каталоге.
Командлет Get-Content
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 6. Экспорт и добавление объектов в CSV-файл
В этом примере описывается экспорт объектов в CSV-файл и использование параметра Add для добавления объектов в существующий файл.
$AppService = (Get-Service -DisplayName *Application* | Select-Object -Property DisplayName, Status)
$AppService | Export-Csv -Path .\Services.Csv -NoTypeInformation
Get-Content -Path .\Services.Csv
$WinService = (Get-Service -DisplayName *Windows* | Select-Object -Property DisplayName, Status)
$WinService | Export-Csv -Path .\Services.csv -NoTypeInformation -Append
Get-Content -Path .\Services.Csv
"DisplayName","Status"
"Application Layer Gateway Service","Stopped"
"Application Identity","Running"
"Windows Audio Endpoint Builder","Running"
"Windows Audio","Running"
"Windows Event Log","Running"
Командлет Get-Service
получает объекты службы. Параметр DisplayName возвращает службы, содержащие слово Application. Объекты службы отправляются по конвейеру командлету Select-Object
. Select-Object
использует параметр Property для указания свойств DisplayName и Status. Переменная $AppService
сохраняет объекты.
Объекты $AppService
отправляются по конвейеру командлету Export-Csv
. Export-Csv
преобразует объекты службы в ряд строк CSV. Параметр Path указывает, что Services.csv
файл сохраняется в текущем каталоге. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6. Командлет Get-Content
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Select-Object
Командлеты Get-Service
повторяются для служб, содержащих слово Windows. Переменная $WinService
сохраняет объекты службы. Командлет Export-Csv
использует параметр Add , чтобы указать, что $WinService
объекты добавляются в существующий Services.csv
файл. Командлет Get-Content
повторяется для отображения обновленного файла, включающего добавленные данные.
Пример 7. Форматирование командлета в конвейере создает непредвиденные результаты
В этом примере показано, почему не следует использовать командлет формата в конвейере. При получении непредвиденных выходных данных устраните неполадки синтаксиса конвейера.
Get-Date | Select-Object -Property DateTime, Day, DayOfWeek, DayOfYear |
Export-Csv -Path .\DateTime.csv -NoTypeInformation
Get-Content -Path .\DateTime.csv
"DateTime","Day","DayOfWeek","DayOfYear"
"Wednesday, January 2, 2019 14:59:34","2","Wednesday","2"
Get-Date | Format-Table -Property DateTime, Day, DayOfWeek, DayOfYear |
Export-Csv -Path .\FTDateTime.csv -NoTypeInformation
Get-Content -Path .\FTDateTime.csv
"ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo", ...
"033ecb2bc07a4d43b5ef94ed5a35d280",,,,"Microsoft.PowerShell.Commands.Internal.Format. ...
"9e210fe47d09416682b841769c78b8a3",,,,,
"27c87ef9bbda4f709f6b4002fa4af63c",,,,,
"4ec4f0187cb04f4cb6973460dfe252df",,,,,
"cf522b78d86c486691226b40aa69e95c",,,,,
Командлет Get-Date
получает объект DateTime . Объект отправляется по конвейеру командлету Select-Object
. Select-Object
использует параметр Property для выбора подмножества свойств объекта. Объект отправляется по конвейеру командлету Export-Csv
. Export-Csv
преобразует объект в формат CSV. Параметр Path указывает, что DateTime.csv
файл сохраняется в текущем каталоге. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6. Командлет Get-Content
использует параметр Path для отображения CSV-файла, расположенного в текущем каталоге.
Format-Table
Когда командлет используется в конвейере для выбора непредвиденных результатов свойств. Format-Table
отправляет объекты формата таблицы вниз конвейера в Export-Csv
командлет, а не объект DateTime . Export-Csv
преобразует объекты формата таблицы в ряд строк CSV. Командлет Get-Content
отображает CSV-файл, содержащий объекты формата таблицы.
Пример 8. Использование параметра Force для перезаписи файлов только для чтения
В этом примере создается пустой, доступный только для чтения файл и используется параметр Force для обновления файла.
New-Item -Path .\ReadOnly.csv -ItemType File
Set-ItemProperty -Path .\ReadOnly.csv -Name IsReadOnly -Value $true
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
Export-Csv : Access to the path 'C:\ReadOnly.csv' is denied.
At line:1 char:15
+ Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Export-Csv], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation -Force
Get-Content -Path .\ReadOnly.csv
"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...
Командлет New-Item
использует параметры Path и ItemType для создания ReadOnly.csv
файла в текущем каталоге. Командлет Set-ItemProperty
использует параметры Name и Value для изменения свойства IsReadOnly файла на true. Командлет Get-Process
получает объекты Process . Объекты процесса отправляются по конвейеру командлету Export-Csv
.
Export-Csv
преобразует объекты процесса в ряд строк CSV. Параметр Path указывает, что ReadOnly.csv
файл сохраняется в текущем каталоге. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6. Выходные данные показывают, что файл не записывается, так как доступ запрещен.
Параметр Force добавляется в Export-Csv
командлет, чтобы принудительно выполнить экспорт записи в файл. Командлет Get-Content
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 9. Использование параметра Force с добавлением
В этом примере показано, как использовать параметры Force и Append . При объединении этих параметров несогласованные свойства объектов можно записать в CSV-файл.
$Content = [PSCustomObject]@{Name = 'PowerShell'; Version = '7.0'}
$Content | Export-Csv -Path .\ParmFile.csv -NoTypeInformation
$AdditionalContent = [PSCustomObject]@{Name = 'Windows PowerShell'; Edition = 'Desktop'}
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
Export-Csv : Cannot append CSV content to the following file: ParmFile.csv.
The appended object does not have a property that corresponds to the following column:
Version. To continue with mismatched properties, add the -Force parameter, and then retry
the command.
At line:1 char:22
+ $AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (Version:String) [Export-Csv], InvalidOperationException
+ FullyQualifiedErrorId : CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell. ...
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append -Force
Import-Csv -Path .\ParmFile.csv
Name Version
---- -------
PowerShell 7.0
Windows PowerShell
Выражение создает PSCustomObject со свойствами Name и Version . Значения хранятся в переменной $Content
. Переменная $Content
отправляется по конвейеру командлету Export-Csv
. Export-Csv
использует параметр Path и сохраняет ParmFile.csv
файл в текущем каталоге. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6.
Другое выражение создает PSCustomObject со свойствами Name и Edition . Значения хранятся в переменной $AdditionalContent
. Переменная $AdditionalContent
отправляется по конвейеру командлету Export-Csv
. Параметр Add используется для добавления данных в файл. Добавление завершается ошибкой, так как имеется несоответствие имени свойства между версией и выпуском.
Параметр Export-Csv
force командлета используется для принудительного выполнения экспорта для записи в файл. Свойство Edition отключено карта. Командлет Import-Csv
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Параметры
-Append
Используйте этот параметр, Export-CSV
чтобы добавить выходные данные CSV в конец указанного файла. Без этого параметра Export-CSV
заменяет содержимое файла без предупреждения.
Этот параметр впервые появился в Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Delimiter
Указывает разделитель для значений свойств. По умолчанию используется запятая (,
). Введите символ, например двоеточие (:
). Чтобы указать точку с запятой (;
), заключите ее в кавычки.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Указывает кодировку для экспортированного CSV-файла. Значение по умолчанию — ASCII
.
Допустимые значения для этого параметра приведены следующим образом:
ASCII
Использует набор символов ASCII (7-разрядный).BigEndianUnicode
Использует UTF-16 с порядком байтов больших байтов.Default
Использует кодировку, соответствующую активной кодовой странице системы (обычно ANSI).OEM
Использует кодировку, соответствующую текущей кодовой странице OEM системы.Unicode
Использует UTF-16 с маленьким порядком байтов.UTF7
Использует UTF-7.UTF8
Использует UTF-8.UTF32
Использует UTF-32 с маленьким порядком байтов.
Type: | String |
Accepted values: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | ASCII |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Этот параметр позволяет Export-Csv
перезаписать файлы с помощью атрибута "Только чтение".
При объединении параметров Force и Append объекты, содержащие несовпадения свойств, можно записать в CSV-файл. В файл записываются только соответствующие свойства. Несовпадение свойств не соответствует карта.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Указывает экспортируемые объекты в качестве строк CSV-файла. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты. Можно также передать объекты Export-CSV
в .
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Указывает путь к выходному CSV-файлу. В отличие от параметра Path, значение параметра LiteralPath используется в том виде, в котором оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, используйте одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
Используйте этот параметр, Export-CSV
чтобы не перезаписать существующий файл. По умолчанию, если файл существует в указанном пути, Export-CSV
перезаписывает файл без предупреждения.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoTypeInformation
Удаляет заголовок сведений #TYPE
из выходных данных. Этот параметр стал значением по умолчанию в PowerShell 6.0 и включен для обратной совместимости.
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Обязательный параметр, указывающий расположение для сохранения выходного файла CSV.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
Использует разделитель списка для текущего языка и региональных параметров в качестве разделителя элементов. Чтобы найти разделитель списка для языка и региональных параметров, используйте следующую команду: (Get-Culture).TextInfo.ListSeparator
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Запрещает обработку или внесение изменений командлета. В выходных данных показано, что произойдет, если командлет был запущен.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
Вы можете передать любой объект с адаптером расширенной системы типов (ETS) в этот командлет.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
Windows PowerShell включает следующие псевдонимы для Export-Csv
:
epcsv
Командлет Export-CSV
преобразует объекты, которые вы отправляете в ряд строк CSV и сохраняет их в указанном текстовом файле. Можно использовать Export-CSV
для сохранения объектов в CSV-файле, а затем использовать Import-Csv
командлет для создания объектов из CSV-файла.
В CSV-файле каждый объект представлен символьным списком значений свойств объекта. Значения свойств преобразуются в строки с помощью метода ToString( ). Строки представлены именем значения свойства. "Export-CSV не экспортирует методы объекта.
Строки CSV выводятся следующим образом:
- По умолчанию первая строка содержит заголовок сведений #TYPE , за которым следует полное имя типа объекта. Например, #TYPE System.Diagnostics.Process.
- Если NoTypeInformation используется первая строка, включающая заголовки столбцов. Заголовки содержат имена свойств первого объекта в виде разделенного символами списка.
- Остальные строки содержат разделенные символами списки значений свойств каждого объекта.
При отправке нескольких объектов Export-CSV
Export-CSV
в файл упорядочивается на основе свойств первого объекта, который вы отправляете. Если остальные объекты не имеют одного из указанных свойств, значение этого свойства для объекта будет пустым, то есть представлено двумя идущими подряд запятыми. Если оставшиеся объекты содержат дополнительные свойства, их значения не включаются в файл.
Командлет можно использовать Import-Csv
для повторного создания объектов из строк CSV в файлах. Полученные объекты являются версиями CSV-файлов исходных объектов, которые состоят из представлений строк значений свойств без методов.
И ConvertTo-Csv
ConvertFrom-Csv
командлеты преобразуют объекты в строки CSV и из строк CSV. Export-CSV
совпадает с ConvertTo-CSV
тем, что он сохраняет строки CSV в файле.
Связанные ссылки
PowerShell