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


ConvertFrom-Csv

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

Синтаксис

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

Описание

Командлет ConvertFrom-Csv создает объекты из строк переменной длины CSV, созданных командлетом ConvertTo-Csv .

С помощью параметров этого командлета можно указать строку заголовка столбца, которая определяет имена свойств результирующего объекта, указать разделитель элементов или направить этот командлет на использование разделителя списка для текущего языка и региональных параметров в качестве разделителя.

Создаваемые объекты ConvertFrom-Csv являются csv-версиями исходных объектов. Значения свойств объектов CSV представляют собой строковые версии значений свойств исходных объектов. Версии CSV объектов не имеют методов.

Можно также использовать Export-Csv командлеты и Import-Csv для преобразования объектов в строки CSV в файле (и обратно). Эти командлеты аналогичны командлетам ConvertTo-Csv и , ConvertFrom-Csv за исключением того, что они сохраняют строки 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

В этом примере показано, как использовать параметр 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 версии 6 и более поздних версий. Переменная $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.

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

-Header

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

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

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

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

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

-InputObject

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

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 типа объекта, они не распознаются и не форматируются записями форматирования типа PowerShell, которые форматируют версии типа объекта, отличные от CSV.

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