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


ConvertFrom-Csv

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

Синтаксис

ConvertFrom-Csv
                [-InputObject] <psobject[]>
                [[-Delimiter] <char>]
                [-Header <string[]>]
                [<CommonParameters>]
ConvertFrom-Csv
                [-InputObject] <psobject[]>
                -UseCulture
                [-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 преобразует объект date в ряд строк CSV. Параметр разделителя используется для указания разделителя с запятой. Строки сохраняются в переменной $Date .

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

В этом примере показано, как использовать параметр Заголовка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 версии 6 и выше. Переменная $Header содержит пользовательский заголовок, который заменяет следующие значения по умолчанию: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime и PSJobTypeName. Переменная $J содержит строку CSV и используется для удаления заголовка по умолчанию. Командлет ConvertFrom-Csv преобразует строку CSV в PSCustomObject и использует параметр Заголовка для применения переменной $Header .

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

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

(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.

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Header

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

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

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

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

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

Type:PSObject[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-UseCulture

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

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

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

String

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

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

PSObject

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

Примечания

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