Поиск по сайту:

ConvertTo-Csv (Microsoft.PowerShell.Utility)


ConvertTo-Csv

Модуль:
Microsoft.PowerShell.Utility

Преобразует объекты .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. Параметр Delimiter указывает точку с запятой для разделения строковых значений. Параметр 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. По умолчанию используется запятая (,). Введите символ, например двоеточие (:). Чтобы указать точку с запятой (;), заключите ее в одинарные кавычки.

Тип :

Чар

Позиция:

1

Значение по умолчанию:

запятая (,)

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-IncludeTypeInformation

При использовании этого параметра первая строка вывода содержит #TYPE, за которым следует полное имя типа объекта. Например, #TYPE System.Diagnostics.Process.

Этот параметр был введен в PowerShell 6.0.

Тип :

SwitchParameter

Псевдонимы:

ITI

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-InputObject

Указывает объекты, которые преобразуются в строки CSV. Введите переменную, содержащую объекты, или введите команду или выражение, позволяющее получить объекты. Вы также можете передать объекты в ConvertTo-CSV.

Тип :

PSОбъект

Позиция:

0

Значение по умолчанию:

None

Необходимый:

True

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-NoHeader

При использовании этого параметра командлет не записывает в выходные данные строку заголовка, содержащую имена столбцов.

Этот параметр был добавлен в PowerShell 7.4.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-NoTypeInformation

Удаляет информационный заголовок #TYPE из вывода. Этот параметр стал значением по умолчанию в PowerShell 6.0 и включен для обратной совместимости.

Тип :

SwitchParameter

Псевдонимы:

NTI

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-QuoteFields

Указывает имена столбцов, которые следует заключить в кавычки. При использовании этого параметра в кавычках заключаются только указанные столбцы. Этот параметр был добавлен в PowerShell 7.0.

Тип :

String[]

Псевдонимы:

QF

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-UseCulture

В качестве разделителя элементов используется разделитель списка для текущей культуры. Чтобы найти разделитель списка для культуры, используйте следующую команду: (Get-Culture).TextInfo.ListSeparator.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

False

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-UseQuotes

Указывает, когда в файлах CSV используются кавычки. Возможные значения:

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

Этот параметр был добавлен в PowerShell 7.0.

Тип :

Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind

Псевдонимы:

UQ

Позиция:

Именованный

Значение по умолчанию:

Всегда

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

PSObject

В этот командлет можно передать любой объект, имеющий адаптер системы расширенных типов (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, что представлено двумя последовательными запятыми. Если оставшиеся объекты имеют дополнительные свойства, значения этих свойств игнорируются.