Поделиться через


ConvertTo-Csv

Преобразует объекты .NET в последовательность строк символьных значений (CSV).

Синтаксис

ConvertTo-Csv
              [-InputObject] <PSObject>
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [<CommonParameters>]
ConvertTo-Csv
              [-InputObject] <PSObject>
              [[-Delimiter] <Char>]
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [<CommonParameters>]
ConvertTo-Csv
              [-InputObject] <PSObject>
              [-UseCulture]
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [<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.

Параметры

-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:#TYPE <Object>
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: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

Входные данные

PSObject

Вы можете передать любой объект с адаптером ConvertTo-CSVETS в .

Выходные данные

String

Выходные данные в формате CSV возвращаются в виде коллекции строк.

Примечания

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