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 |
Входные данные
Строки CSV можно передать в этот командлет.
Выходные данные
Этот командлет возвращает объекты, описанные свойствами в строках CSV.
Примечания
Так как импортируемые объекты являются версиями csv типа объекта, они не распознаются и не форматируются записями форматирования типа PowerShell, которые форматируют версии типа объекта, отличные от CSV.
В формате CSV каждый объект представлен как разделенный запятыми список значений его свойств. Значения свойств преобразуются в строки (с помощью метода ToString() объекта ), поэтому они представлены именем значения свойства. Этот командлет не экспортирует методы объекта .