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