ConvertTo-Csv
Преобразует объекты .NET в ряд строк, разделенных символами (CSV).
Синтаксис
ConvertTo-Csv
[-InputObject] <PSObject>
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
Описание
Командлет ConvertTo-CSV
возвращает ряд строк, разделенных символами (CSV), которые представляют объекты, которые вы отправляете. Затем можно использовать ConvertFrom-Csv
командлет для повторного создания объектов из строк CSV. Объекты, преобразованные из CSV, являются строковыми значениями исходных объектов, содержащих значения свойств, и никакие методы.
Командлет можно использовать Export-Csv
для преобразования объектов в строки CSV. Export-CSV
аналогично ConvertTo-CSV
, за исключением того, что он сохраняет строки CSV в файл.
Командлет ConvertTo-CSV
имеет параметры, чтобы указать разделитель, отличный от запятой, или использовать текущий язык и региональные параметры в качестве разделителя.
Примеры
Пример 1. Преобразование объекта в CSV
В этом примере объект Process преобразуется в строку CSV.
Get-Process -Name pwsh | ConvertTo-Csv -NoTypeInformation
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"pwsh","8","950","2204001161216","100925440","59686912","67104", ...
Командлет Get-Process
получает объект Process и использует параметр Name для указания процесса PowerShell. Объект процесса отправляется по конвейеру командлету ConvertTo-CSV
. Командлет ConvertTo-CSV
преобразует объект в строки CSV. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6.
Пример 2. Преобразование объекта DateTime в CSV
В этом примере объект DateTime преобразуется в строку CSV.
$Date = Get-Date
ConvertTo-Csv -InputObject $Date -Delimiter ';' -NoTypeInformation
"DisplayHint";"DateTime";"Date";"Day";"DayOfWeek";"DayOfYear";"Hour";"Kind";"Millisecond";"Minute";"Month";"Second";"Ticks";"TimeOfDay";"Year"
"DateTime";"Friday, January 4, 2019 14:40:51";"1/4/2019 00:00:00";"4";"Friday";"4";"14";"Local";"711";"40";"1";"51";"636822096517114991";"14:40:51.7114991";"2019"
Командлет Get-Date
получает объект DateTime и сохраняет его в переменной $Date
. Командлет ConvertTo-Csv
преобразует объект DateTime в строки. Параметр InputObject использует объект DateTime , хранящийся в переменной $Date
. Параметр разделителя задает точку с запятой для разделения строковых значений. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6.
Пример 3. Преобразование журнала событий PowerShell в CSV
В этом примере журнал событий Windows для PowerShell преобразуется в ряд строк CSV.
(Get-Culture).TextInfo.ListSeparator
Get-WinEvent -LogName 'PowerShellCore/Operational' | ConvertTo-Csv -UseCulture -NoTypeInformation
,
"Message","Id","Version","Qualifiers","Level","Task","Opcode","Keywords","RecordId", ...
"Error Message = System error""4100","1",,"3","106","19","0","31716","PowerShellCore", ...
Командлет Get-Culture
использует вложенные свойства TextInfo и ListSeparator и отображает разделитель списка по умолчанию текущего языка и региональных параметров. Командлет Get-WinEvent
получает объекты журнала событий и использует параметр LogName для указания имени файла журнала. Объекты журнала событий отправляются по конвейеру командлету ConvertTo-Csv
. Командлет ConvertTo-Csv
преобразует объекты журнала событий в ряд строк CSV. Параметр UseCulture использует разделитель списка по умолчанию текущего языка и региональных параметров в качестве разделителя. Параметр NoTypeInformation удаляет заголовок сведений #TYPE из выходных данных CSV и не требуется в PowerShell 6.
Пример 4. Преобразование в CSV с кавычками вокруг двух столбцов
В этом примере объект DateTime преобразуется в строку CSV.
Get-Date | ConvertTo-Csv -QuoteFields "DateTime","Date"
DisplayHint,"DateTime","Date",Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:27:34 AM","8/22/2019 12:00:00 AM",22,Thursday,234,11,Local,569,27,8,34,637020700545699784,11:27:34.5699784,2019
Пример 5. Преобразование в CSV с кавычками только при необходимости
В этом примере объект DateTime преобразуется в строку CSV.
Get-Date | ConvertTo-Csv -UseQuotes AsNeeded
DisplayHint,DateTime,Date,Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:31:00 AM",8/22/2019 12:00:00 AM,22,Thursday,234,11,Local,713,31,8,0,637020702607132640,11:31:00.7132640,2019
Пример 6. Преобразование хэш-файлов в CSV
В PowerShell 7.2 и более поздних версиях при преобразовании хэш-элементов в CSV ключи первой хэш-записи сериализуются и используются в качестве заголовков в выходных данных.
$person1 = @{
Name = 'John Smith'
Number = 1
}
$person2 = @{
Name = 'Jane Smith'
Number = 2
}
$allPeople = $person1, $person2
$allPeople | ConvertTo-Csv
"Name","Number"
"John Smith","1"
"Jane Smith","2"
Пример 7. Преобразование хэш-страниц в CSV с дополнительными свойствами
В PowerShell 7.2 и выше при преобразовании хэш-страницы с дополнительными свойствами, добавленными с Add-Member
помощью или Select-Object
дополнительными свойствами, также добавляются в виде заголовка в выходных данных CSV.
$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
Каждый хэш-файл имеет свойство с именем ExtraProp
добавлено Add-Member
, а затем преобразовано в CSV. Теперь в выходных данных отображается ExtraProp
заголовок.
Если добавленное свойство имеет то же имя, что и ключ из хэш-файла, ключ имеет приоритет, а ключ преобразуется только в CSV.
Параметры
-Delimiter
Указывает разделитель для разделения значений свойств в строках CSV. По умолчанию используется запятая (,
). Введите символ, например двоеточие (:
). Чтобы указать точку с запятой (;
), заключите ее в одинарные кавычки.
Тип: | Char |
Position: | 1 |
Default value: | comma (,) |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-IncludeTypeInformation
Если этот параметр используется первая строка выходных данных, #TYPE
за которой следует полное имя типа объекта. Например, #TYPE System.Diagnostics.Process
.
Этот параметр появился в PowerShell 6.0.
Тип: | SwitchParameter |
Aliases: | ITI |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Указывает объекты, преобразованные в строки CSV. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты. Можно также передать объекты ConvertTo-CSV
в .
Тип: | PSObject |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-NoHeader
При использовании этого параметра командлет не записывает строку заголовка, содержащую имена столбцов в выходные данные.
Этот параметр добавлен в PowerShell 7.4.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-NoTypeInformation
Удаляет заголовок сведений #TYPE
из выходных данных. Этот параметр стал значением по умолчанию в PowerShell 6.0 и включен для обратной совместимости.
Тип: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-QuoteFields
Указывает имена столбцов, которые должны быть кавычек. Если этот параметр используется, кавычекируются только указанные столбцы. Этот параметр был добавлен в PowerShell 7.0.
Тип: | String[] |
Aliases: | QF |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseCulture
Использует разделитель списка для текущего языка и региональных параметров в качестве разделителя элементов. Чтобы найти разделитель списка для языка и региональных параметров, используйте следующую команду: (Get-Culture).TextInfo.ListSeparator
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseQuotes
Указывает, когда кавычки используются в CSV-файлах. Возможны следующие значения:
- Никогда - не цитировать ничего
- Всегда — процитировать все (поведение по умолчанию)
- AsNeeded — только поля с разделителями, двойные кавычки или новый символ
Этот параметр был добавлен в PowerShell 7.0.
Тип: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliases: | UQ |
Position: | Named |
Default value: | Always |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Вы можете передать любой объект с адаптером расширенной системы типов (ETS) в этот командлет.
Выходные данные
Этот командлет возвращает одну или несколько строк, представляющих каждый преобразованный объект.
Примечания
В формате CSV каждый объект представлен символьным списком его значения свойства. Значения свойств преобразуются в строки с помощью метода ToString() объекта. Строки представлены именем значения свойства. ConvertTo-CSV
не экспортирует методы объекта.
Строки CSV выводятся следующим образом:
- Если используется IncludeTypeInformation , первая строка состоит из #TYPE с полным именем типа объекта. Например, #TYPE System.Diagnostics.Process.
- Если IncludeTypeInformation не используется первая строка, включающая заголовки столбцов. Заголовки содержат имена свойств первого объекта в виде разделенного символами списка.
- Остальные строки содержат разделенные символами списки значений свойств каждого объекта.
Начиная с PowerShell 6.0 поведение ConvertTo-CSV
по умолчанию заключается в том, чтобы не включать сведения #TYPE в CSV-файл и NoTypeInformation подразумевается. IncludeTypeInformation можно использовать для включения сведений #TYPE и эмулировать поведение ConvertTo-CSV
по умолчанию до PowerShell 6.0.
При отправке нескольких объектов ConvertTo-CSV
ConvertTo-CSV
упорядочивает строки на основе свойств первого объекта, который вы отправляете. Если остальные объекты не имеют одного из указанных свойств, значение свойства этого объекта равно NULL, как представлено двумя последовательными запятыми. Если у остальных объектов есть дополнительные свойства, их значения игнорируются.
Связанные ссылки
PowerShell