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

ConvertFrom-Csv (Microsoft.PowerShell.Utility)


ConvertFrom-Csv

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

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

Синтаксис

ConvertFrom-Csv
                [[-Delimiter] <Char>]
                [-InputObject] <PSObject[]>
                [-Header <String[]>]
                [<CommonParameters>]
ConvertFrom-Csv
                -UseCulture
                [-InputObject] <PSObject[]>
                [-Header <String[]>]
                [<CommonParameters>]

Описание

Командлет ConvertFrom-Csv преобразует данные значений, разделенных символами (CSV), в объекты типа PSObject для каждой строки данных CSV. Новые объекты записываются в конвейер в том порядке, в котором они считываются из данных CSV. Значения в строке заголовка столбца CSV становятся именами свойств, добавляемых к каждому новому PSObject.

Объекты, которые создает ConvertFrom-Csv, представляют собой объект типа PSObject для каждой строки в CSV-файле. Значения свойств объектов CSV представляют собой строковые версии значений свойств исходных объектов. CSV-версии объектов не имеют методов.

Вы также можете использовать командлеты Export-Csv и Import-Csv для преобразования объектов в строки CSV в файле и обратно. Эти командлеты аналогичны командлетам ConvertTo-Csv и ConvertFrom-Csv, за исключением того, что они сохраняют строки CSV в файле.

Тип PSObject поддерживает порядок свойств в заголовке столбца. Это означает, что вы получите тот же порядок столбцов при преобразовании объектов обратно в формат CSV.

Примеры

Пример 1. Преобразование процессов на локальном компьютере в формат CSV.

В этом примере показано, как преобразовать процессы на локальном компьютере в формат CSV, а затем восстановить их в форму объекта.

$P = Get-Process | ConvertTo-Csv
$P | ConvertFrom-Csv

Командлет Get-Process отправляет процессы по конвейеру в ConvertTo-Csv. Командлет ConvertTo-Csv преобразует объекты процесса в серию строк CSV. Командлет ConvertFrom-Csv преобразует строки CSV в версии CSV исходных объектов процесса. Строки CSV сохраняются в переменной $P.

Пример 2. Преобразование объекта данных в формат CSV, а затем в формат объекта CSV.

В этом примере показано, как преобразовать объект данных в формат CSV, а затем в формат объекта CSV.

$Date = Get-Date | ConvertTo-Csv -Delimiter ';'
ConvertFrom-Csv -InputObject $Date -Delimiter ';'

Первая команда использует Get-Date для отправки текущей даты и времени по конвейеру в ConvertTo-Csv. Командлет ConvertTo-Csv преобразует объект даты в серию строк CSV. Параметр Delimiter используется для указания разделителя точка с запятой. Строки сохраняются в переменной $Date.

Пример 3. Используйте параметр заголовка для изменения названий свойств.

В этом примере показано, как использовать параметр Header ConvertFrom-Csv для изменения имен свойств в результирующем импортированном объекте.

$J = Start-Job -ScriptBlock { Get-Process } | ConvertTo-Csv  -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command',
          'StateInfo', 'Finished', 'InstanceId', 'Id', 'Name', 'ChildJobs',
          'BeginTime', 'EndTime', 'JobType', 'Output', 'Error', 'Progress',
          'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from $J
$J = $J[1..($J.count - 1)]
$J | ConvertFrom-Csv -Header $Header

State         : Running
MoreData      : True
StatusMessage :
Location      : localhost
Command       : Get-Process
StateInfo     : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : a259eb63-6824-4b97-a033-305108ae1c2e
Id            : 1
Name          : Job1
ChildJobs     : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime     : 12/20/2018 18:59:57
EndTime       :
JobType       : BackgroundJob
Output        : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress      : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.VerboseRecord]
Debug         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information   : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]

Командлет Start-Job запускает фоновое задание, которое запускает Get-Process. Объект задания отправляется по конвейеру в ConvertTo-Csv и преобразуется в строку CSV. Параметр NoTypeInformation удаляет заголовок информации о типе из вывода CSV и является необязательным в PowerShell v6 и более поздних версиях. Переменная $Header содержит пользовательский заголовок, который заменяет следующие значения по умолчанию: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime и PSJobTypeName. Переменная $J содержит строку CSV и используется для удаления заголовка по умолчанию. Командлет ConvertFrom-Csv преобразует строку CSV в PSCustomObject и использует параметр Header для применения $Header переменная.

Пример 4. Преобразование строк CSV объектов службы

В этом примере показано, как использовать командлет ConvertFrom-Csv с параметром UseCulture.

(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -UseCulture

Командлет Get-Culture использует вложенные свойства TextInfo и ListSeparator для получения разделителя списка по умолчанию для текущей культуры. Командлет Get-Service отправляет объекты службы по конвейеру в ConvertTo-Csv. ConvertTo-Csv преобразует объекты службы в серию строк CSV. Строки CSV хранятся в переменной $Services. Командлет ConvertFrom-Csv использует параметр InputObject и преобразует строки CSV из переменной $Services. Параметр UseCulture использует разделитель списка по умолчанию для текущей культуры.

При использовании параметра UseCulture убедитесь, что разделитель списка по умолчанию для текущей культуры соответствует разделителю, используемому в строках CSV. В противном случае ConvertFrom-Csv не сможет генерировать объекты из строк CSV.

Параметры

-Delimiter

Указывает разделитель, разделяющий значения свойств в строках CSV. По умолчанию используется запятая (,). Введите символ, например двоеточие (:). Чтобы указать точку с запятой (;), заключите ее в одинарные кавычки.

Если вы укажете символ, отличный от фактического разделителя строк в файле, ConvertFrom-Csv не сможет создавать объекты из строк CSV и возвращает строки CSV.

Тип :

Чар

Позиция:

1

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

запятая (,)

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

False

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

False

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

False

-Header

Указывает альтернативную строку заголовка столбца для импортируемой строки. Заголовок столбца определяет имена свойств объектов, созданных с помощью ConvertFrom-Csv.

Введите заголовки столбцов в виде списка, разделенного символами. не заключайте строку заголовка в кавычки. Заключите каждый заголовок столбца в одинарные кавычки.

Если вы введете меньше заголовков столбцов, чем имеется столбцов данных, оставшиеся столбцы данных будут отброшены. Если вы введете больше заголовков столбцов, чем имеется столбцов данных, дополнительные заголовки столбцов будут созданы с пустыми столбцами данных.

При использовании параметра Header исключите строку заголовка столбца из строк CSV. В противном случае этот командлет создает дополнительный объект из элементов в строке заголовка.

Тип :

String[]

Позиция:

Именованный

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

None

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

False

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

False

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

False

-InputObject

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

Тип :

PSОбъект[]

Позиция:

0

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

None

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

True

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

True

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

False

-UseCulture

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

Тип :

SwitchParameter

Позиция:

Именованный

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

None

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

True

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

False

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

False

Входы

Строка

В этот командлет можно передать строки CSV.

Выходы

PSObject

Этот командлет возвращает объекты, описанные свойствами в строках CSV.

Примечания

В формате CSV каждый объект представлен разделенным символами списком значений свойств объекта. Значения свойств преобразуются в строки с помощью метода объекта ToString(). Невозможно экспортировать методы объекта.