Export-Csv
Преобразует объекты в последовательность строк с разделиниями-запятыми (CSV) и сохраняет строки в файл.
Синтаксис
Export-Csv
-InputObject <PSObject>
[[-Path] <String>]
[-LiteralPath <String>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-Append]
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Csv
-InputObject <PSObject>
[[-Path] <String>]
[-LiteralPath <String>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-Append]
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Export-CSV
создает CSV-файл объектов, которые вы отправляете. Каждый объект представляет собой строку, содержащую разделенный запятыми список значений свойств объекта. Командлет можно использовать для Export-CSV
создания электронных таблиц и предоставления общего доступа к данным программам, которые принимают CSV-файлы в качестве входных данных.
Не форматируйте объекты перед их отправкой командлету Export-CSV
. Если Export-CSV
получает отформатированные объекты, CSV-файл содержит свойства формата, а не свойства объекта. Чтобы экспортировать только выбранные свойства объекта, используйте Select-Object
командлет .
Примеры
Пример 1. Экспорт свойств процесса в CSV-файл
В этом примере выбирается обработка объектов с определенными свойствами, а объекты экспортируются в 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 сохраняется в текущем каталоге. Параметр Delimiter задает точку с запятой для разделения строковых значений. Параметр 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 -IncludeTypeInformation
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 сохраняется в текущем каталоге. IncludeTypeInformation включает заголовок сведений о #TYPE в выходных данных CSV. Командлет Get-Content
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Пример 6. Экспорт и добавление объектов в CSV-файл
В этом примере описывается экспорт объектов в CSV-файл и использование параметра Append для добавления объектов в существующий файл.
$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 для отображения файла, расположенного в текущем каталоге.
Командлеты Get-Service
и Select-Object
повторяются для служб, содержащих слово Windows. Переменная $WinService
хранит объекты службы. Командлет Export-Csv
использует параметр Append , чтобы указать, что $WinService
объекты добавляются в существующий файл Services.csv. Командлет Get-Content
повторяется для отображения обновленного файла, который содержит добавленные данные.
Пример 7. Командлет format в конвейере создает непредвиденные результаты
В этом примере показано, почему важно не использовать командлет формата в конвейере. При получении непредвиденных выходных данных устраните неполадки с синтаксисом конвейера.
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 Core'; Version = '6.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 Core 6.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
командлет . Параметр Append используется для добавления данных в файл. Добавление завершается ошибкой из-за несоответствия имени свойства между версией и выпуском.
Параметр командлета Export-Csv
Force используется для принудительной записи экспорта в файл. Свойство Edition отбрасывается. Командлет Import-Csv
использует параметр Path для отображения файла, расположенного в текущем каталоге.
Параметры
-Append
Используйте этот параметр, Export-CSV
чтобы добавить выходные данные CSV в конец указанного файла. Без этого параметра Export-CSV
заменяет содержимое файла без предупреждения.
Этот параметр впервые появился в Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
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-файла. Значение по умолчанию — utf8NoBOM
.
Ниже приведены допустимые значения для этого параметра.
ascii
: использует кодировку для 7-разрядной кодировки ASCII.bigendianunicode
: кодирует в формате UTF-16 с использованием порядка байтов с большим байтом.oem
: использует кодировку по умолчанию для MS-DOS и консольных программ.unicode
: кодирует в формате UTF-16 с использованием порядка байтов с маленьким порядком байтов.utf7
: кодирует в формате UTF-7.utf8
: кодирует в формате UTF-8.utf8BOM
: кодирует в формате UTF-8 с меткой порядка байтов (BOM)utf8NoBOM
: кодирует в формате UTF-8 без метки порядка байтов (BOM)utf32
: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр Encoding также разрешает числовые идентификаторы зарегистрированных кодовых страниц (например -Encoding 1251
, ) или строковые имена зарегистрированных кодовых страниц (например -Encoding "windows-1251"
, ). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Этот параметр позволяет Export-Csv
перезаписывать файлы с помощью атрибута Только для чтения .
При объединении параметров Force и Append объекты, содержащие несовпадения свойств, можно записать в CSV-файл. В файл записываются только соответствующие свойства. Несовпадение свойств отбрасывается.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeTypeInformation
При использовании этого параметра первая строка выходных данных CSV содержит #TYPE за которым следует полное имя типа объекта. Например, #TYPE System.Diagnostics.Process.
Этот параметр появился в PowerShell 6.0.
Type: | SwitchParameter |
Aliases: | ITI |
Position: | Named |
Default value: | #TYPE <Object> |
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, LP |
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: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoTypeInformation
Удаляет заголовок сведений #TYPE из выходных данных. Этот параметр стал стандартным в PowerShell 6.0 и включен для обеспечения обратной совместимости.
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | None |
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: | None |
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) в Export-CSV
.
Выходные данные
Список CSV-файлов отправляется в файл, указанный в параметре Path.
Примечания
Командлет Export-CSV
преобразует объекты, которые вы отправляете, в последовательность строк CSV и сохраняет их в указанном текстовом файле. Можно использовать для Export-CSV -IncludeTypeInformation
сохранения объектов в CSV-файле, а затем использовать Import-Csv
командлет для создания объектов из текста в CSV-файле.
В CSV-файле каждый объект представлен списком значений свойств объекта с разделителями-запятыми. Значения свойств преобразуются в строки с помощью метода ToString(). Строки представлены именем значения свойства. Export-CSV -IncludeTypeInformation
не экспортирует методы объекта .
Строки CSV выводятся следующим образом:
- Если используется IncludeTypeInformation , первая строка содержит заголовок сведений #TYPE , за которым следует полное имя типа объекта. Например, #TYPE System.Diagnostics.Process.
- Если IncludeTypeInformation не используется, первая строка включает заголовки столбцов. Заголовки содержат имена свойств первого объекта в виде списка, разделенного запятыми.
- Остальные строки содержат разделенные запятыми списки значений свойств каждого объекта.
Начиная с PowerShell 6.0, поведение Export-CSV
по умолчанию заключается в том, чтобы не включать сведения о #TYPE в CSV, и подразумевается NoTypeInformation . IncludeTypeInformation можно использовать для включения #TYPE Information и эмуляции поведения Export-CSV
по умолчанию до PowerShell 6.0.
При отправке нескольких объектов в Export-CSV
файл Export-CSV
упорядочивается на основе свойств первого отложенного объекта. Если остальные объекты не имеют одного из указанных свойств, значение этого свойства для объекта будет пустым, то есть представлено двумя идущими подряд запятыми. Если оставшиеся объекты содержат дополнительные свойства, их значения не включаются в файл.
Командлет можно использовать для повторного Import-Csv
создания объектов из строк CSV в файлах. Полученные объекты являются версиями CSV-файлов исходных объектов, которые состоят из представлений строк значений свойств без методов.
Командлеты ConvertTo-Csv
и ConvertFrom-Csv
преобразуют объекты в строки CSV и из строк CSV. Export-CSV
то же, что ConvertTo-CSV
и , за исключением того, что он сохраняет строки CSV в файле.