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 позволяют задать строку заголовков столбцов, определяющую имена свойств конечных объектов, задать разделитель элементов или сделать так, чтобы командлет ConvertFrom-CSV использовал в качестве разделителя значений установленный для текущей культуры разделитель элементов списков.
Объекты, создаваемые командлетом ConvertFrom-CSV, являются CSV-версиями исходных объектов. Значения свойств CSV-объектов являются строковыми версиями значений свойств исходных объектов. У CSV-версий объектов нет методов.
Можно также преобразовывать объекты в строки CSV в файле и обратно, используя для этого командлеты Export-CSV и Import-CSV. Эти командлеты очень похожи на командлеты ConvertTo-CSV и ConvertFrom-CSV за тем лишь исключением, что они сохраняют CSV-строки в файл.
Параметры
-Delimiter <char>
Задает разделитель значений свойств в строках CSV. По умолчанию используется запятая (,). Введите символ, например двоеточие (:). Чтобы задать точку с запятой (;), заключите ее в кавычки.
Если указать символ, отличный от разделителя, используемого в строках CSV, командлет ConvertFrom-CSV не сможет создать объекты из строк CSV. Вместо этого он возвращает строки.
Обязательно? |
false |
Позиция? |
2 |
Значение по умолчанию |
',' |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Header <string[]>
Задает строку заголовков столбцов для импортируемой строки. Заголовки столбцов определяют имена свойств объекта, создаваемого с помощью командлета ConvertFrom-CSV.
Введите список заголовков столбцов, разделенных запятыми. Заключите каждый элемент в кавычки (одиночные или двойные). Не заключайте строку заголовка в кавычки. Если количество введенных заголовков столбцов меньше, чем количество столбцов, у оставшихся столбцов не будет заголовков. Если количество заголовков столбцов превышает количество столбцов, лишние заголовки игнорируются.
При использовании параметра Header пропустите строку заголовков столбцов из строк CSV. В противном случае командлет ConvertFrom-CSV создаст из элементов строки заголовков лишний объект.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-InputObject <PSObject[]>
Задает строки CSV для преобразования в объекты. Укажите переменную, содержащую строки CSV, либо введите команду или выражение, получающие их. Кроме того, можно передать CSV-строки командлету ConvertFrom-CSV по конвейеру.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue, ByPropertyName) |
Принимать подстановочные знаки? |
false |
-UseCulture
Использовать в качестве разделителя в строках разделитель элементов списка из текущей культуры. По умолчанию используется запятая (,).
Чтобы найти разделитель элементов списка для текущей культуры, воспользуйтесь следующей командой: (Get-Culture).TextInfo.ListSeparator. Если указать символ, отличный от разделителя, используемого в строках CSV, командлет ConvertFrom-CSV не сможет создать объекты из строк CSV. Вместо этого он возвращает строки.
Обязательно? |
true |
Позиция? |
named |
Значение по умолчанию |
Запятая |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.String Строки CSV можно перенаправить в конвейер ConvertFrom-CSV. |
Выходные данные |
System.Management.Automation.PSObject Командлет ConvertFrom-CSV возвращает объекты, описываемые свойствами в строках CSV. |
Примечания
Поскольку импортируемые объекты являются CSV-версиями типа объекта, они не распознаются и не форматируются записями форматирования типов Windows PowerShell, которые используются для форматирования объектов данного типа, не являющихся CSV-версиями.
В формате CSV каждый объект представляется списком разделенных запятыми значений свойств этого объекта. Значения свойств преобразуются в строковый формат (с помощью метода ToString() объекта), поэтому они обычно представляются именами значений свойств. Командлет ConvertTo-CSV не экспортирует методы объекта.
Пример 1
C:\PS>$p = get-process | convertto-csv
C:\PS> $p | convertfrom-csv
Описание
-----------
Эти команды преобразуют процессы на локальном компьютере в формат CSV, а затем восстанавливают их в виде объектов.
Первая команда с помощью командлета Get-Process получает выполняющиеся на локальном компьютере процессы. С помощью оператора конвейера (|) они передаются командлету ConvertTo-CSV, который переводит объекты процессов в формат CSV. Строки CSV сохраняются в переменной $p.
Вторая команда с помощью оператора конвейера передает строки CSV из переменной $p в командлет ConvertFrom-CSV. Этот командлет преобразует строки CSV в CSV-версии исходных объектов процессов.
Пример 2
C:\PS>$date = get-date | convertto-csv -delimiter ";"
C:\PS> convertfrom-csv -inputobject $date -delimiter ";"
Описание
-----------
Эти команды преобразуют объект данных в формат CSV, а затем в формат CSV-объекта.
Первая команда с помощью командлета Get-Date получает текущее значение даты и времени. Оператор конвейера (|) передает дату командлету ConvertTo-CSV, который преобразует объект даты в набор строк CSV. Параметр Delimiter используется в этой команде для указания разделителя в виде точки с запятой. Строки сохраняются в переменной $date.
Вторая команда использует командлет ConvertFrom-CSV, чтобы преобразовать строки CSV в переменной $date обратно в формат объекта. Команда использует параметр InputObject, чтобы задать строки CSV, и параметр Delimiter, чтобы задать разделитель в виде точки с запятой.
Пример 3
C:\PS>$j = start-job -scriptblock { get-process } | convertto-csv
C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"
# Delete header from $j
C:\PS> $j = $j[0], $j[2..($j.count - 1)]
$j | convertfrom-csv -header $header
MoreData : True
StatusMessage :
Location : localhost
Command : get-process
State : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 6fcb6578-7f42-4d93-9f23-9937f6aac1a2
SessionId : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
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.String]
Debug : System.Management.Automation.PSDataCollection`1[System.String]
Warning : System.Management.Automation.PSDataCollection`1[System.String]
StateChanged :
Описание
-----------
В этом примере показано, как с помощью параметра Header командлета ConvertFrom-Csv изменять имена свойств в конечном импортированном объекте.
Первая команда с помощью командлета Start-Job запускает на локальном компьютере фоновое задание, выполняющее команду Get-Process. С помощью оператора конвейера (|) полученный объект задания передается командлету ConvertTo-CSV, который преобразует его в формат CSV. С помощью оператора присваивания (=) полученные данные CSV сохраняются в переменной $j.
Вторая команда сохраняет заголовок в переменной $header. В отличие от заголовка по умолчанию, в этом заголовке вместо имени "HasMoreData" используется имя "MoreData", а вместо имени "JobStateInfo" — имя "State".
Третья команда удаляет исходный заголовок (вторая строка) из строк CSV и возвращает его в переменную $j.
Четвертая команда с помощью командлета ConvertFrom-CSV преобразует строки CSV в CSV-версию объекта задания. Команда пересылает содержимое переменной $j в командлет ConvertFrom-CSV с помощью оператора конвейера (|). Полученный объект имеет свойства "MoreData" и "State", как и было указано в заголовке.
Пример 4
C:\PS>(get-culture).textinfo.listseparator
C:\PS> ConvertFrom-Csv -inputobject $services -UseCulture
Описание
-----------
Команда использует командлет ConvertFrom-CSV, чтобы преобразовать строки CSV объекта-службы, которые были получены с помощью командлета ConvertTo-CSV. В этой команде параметр UseCulture используется для того, чтобы командлет ConvertFrom-CSV использовал в качестве разделителя значений разделитель элементов списка текущей культуры.
При использовании параметра UseCulture необходимо проследить за тем, чтобы разделитель элементов списка текущей культуры совпадал с разделителем, используемым в строках CSV. В противном случае командлету ConvertFrom-CSV не удастся создать объекты на основании строк CSV.
В этом примере команда Get-Culture служит для проверки разделителя элементов списка перед использованием команды ConvertFrom-CSV.