ConvertTo-Csv
Преобразует объекты .NET в последовательность строк символьных значений (CSV).
Синтаксис
ConvertTo-Csv
[-InputObject] <PSObject>
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[<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. Значение по умолчанию — запятая (,
). Введите символ, например двоеточие (:
). Чтобы указать точку с запятой (;
), заключите ее в одинарные кавычки.
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeTypeInformation
При использовании этого параметра первая строка выходных данных содержит #TYPE
полное имя типа объекта. Например, #TYPE System.Diagnostics.Process
.
Этот параметр появился в PowerShell 6.0.
Type: | SwitchParameter |
Aliases: | ITI |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Указывает объекты, которые преобразуются в строки CSV. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты. Объекты также можно передать в ConvertTo-CSV
.
Type: | PSObject |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
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 |
-QuoteFields
Задает имена столбцов, которые должны быть заключены в кавычки. Если этот параметр используется, то в кавычки в кавычки входят только указанные столбцы. Этот параметр был добавлен в PowerShell 7.0.
Type: | String[] |
Aliases: | QF |
Position: | Named |
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 |
-UseQuotes
Указывает, когда в CSV-файлах используются кавычки. Возможны следующие значения:
- Никогда - не цитировать ничего
- Всегда — все кавычки (поведение по умолчанию)
- AsNeeded — только поля кавычек, содержащие символ разделителя, двойные кавычки или символ новой строки.
Этот параметр был добавлен в PowerShell 7.0.
Type: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Aliases: | UQ |
Position: | Named |
Default value: | Always |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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, представленное двумя последовательными запятыми. Если у остальных объектов есть дополнительные свойства, их значения игнорируются.