Import-CSV
Преобразует свойства объекта из CSV-файла (с разделителями-запятыми) в CSV-версии исходных объектов.
Синтаксис
Import-CSV [[-Delimiter] <char>] [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
Описание
Командлет Import-CSV создает объекты из CSV-файлов переменной длины, созданных с помощью командлета Export-CSV.
Параметры командлета Import-CSV позволяют задать строку заголовков столбцов, определяющую имена свойств конечных объектов, задать разделитель элементов или сделать так, чтобы командлет Import-CSV использовал в качестве разделителя значений установленный для текущей культуры разделитель элементов списков.
Объекты, создаваемые командлетом Import-CSV, являются CSV-версиями исходных объектов. Значения свойств CSV-объектов являются строковыми версиями значений свойств исходных объектов. У CSV-версий объектов нет методов.
Можно также преобразовывать объекты в строки CSV и обратно, используя для этого командлеты ConvertTo-CSV и ConvertFrom-CSV. Эти командлеты очень похожи на командлеты Export-CSV и Import-CSV за исключением того, что они не сохраняют строки CSV в файл.
Параметры
-Delimiter <char>
Задает разделитель значений свойств в CSV-файле. По умолчанию используется запятая (,). Введите символ, например двоеточие (:). Чтобы задать точку с запятой (;), заключите ее в кавычки.
Если указать символ, отличный от фактического разделителя, используемого в файле, командлет Import-CSV не сможет создать объекты из строк CSV. Вместо этого он возвращает строки.
Обязательно? |
false |
Позиция? |
2 |
Значение по умолчанию |
, |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Header <string[]>
Задает строку заголовков столбцов для импортируемого файла. Заголовки столбцов определяют имена свойств объекта, создаваемого с помощью командлета Import-CSV.
Введите список заголовков столбцов, разделенных запятыми. Заключите каждый элемент в кавычки (одиночные или двойные). Не заключайте строку заголовка в кавычки. Если количество введенных заголовков столбцов меньше, чем количество столбцов, у оставшихся столбцов не будет заголовков. Если количество заголовков столбцов превышает количество столбцов, лишние заголовки игнорируются.
При использовании параметра Header удалите исходную строку заголовков из CSV-файла. В противном случае командлет Import-CSV создаст из элементов строки заголовков лишний объект.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Path <string[]>
Задает путь к импортируемому CSV-файлу. Кроме того, можно передать путь командлету Import-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 Строку, содержащую путь, можно передать командлету Import-CSV по конвейеру. |
Выходные данные |
Объект. Командлет Import-CSV возвращает объекты, описываемые содержимым CSV-файла. |
Примечания
Поскольку импортируемые объекты являются CSV-версиями типа объекта, они не распознаются и не форматируются записями форматирования типов Windows PowerShell, которые используются для форматирования объектов данного типа, не являющихся CSV-версиями.
В CSV-файле каждый объект представляется списком разделенных запятыми значений свойств этого объекта. Значения свойств преобразуются в строковый формат (с помощью метода ToString() объекта), поэтому они обычно представляются именами значений свойств. Командлет Export-CSV не экспортирует методы объекта.
Пример 1
C:\PS>get-process | export-csv processes.csv
C:\PS> $p = import-CSV processes.csv
C:\PS> $p | get-member
TypeName: CSV:System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Equals Method System.Boolean Equals(Object obj)
GetHashCode Method System.Int32 GetHashCode()
GetType Method System.Type GetType()
ToString Method System.String ToString()
BasePriority NoteProperty System.String BasePriority=8
Company NoteProperty System.String Company=Microsoft Corporation
...
C:\PS> $p | out-gridview
Описание
-----------
В этом примере показано, как экспортировать, а затем импортировать CSV-файл с объектами Microsoft .NET Framework.
Первая команда с помощью командлета Get-Process получает выполняющийся на локальном компьютере процесс. С помощью оператора конвейера (|) она передает объекты процесса командлету Export-CSV, который экспортирует объекты процессов в файл Processes.csv в текущем каталоге.
Вторая команда использует командлет Import-CSV для импорта процессов из файла Processes.csv. Результирующие объекты процессов сохраняются в переменной $p.
Третья команда с помощью оператора конвейера передает импортированные объекты командлетам Get-Member. Результаты показывают, эти объекты являются объектами CSV:System.Diagnostic.Process, а не объектами System.Diagnostic.Process, возвращаемыми командлетом Get-Process.
Кроме того, поскольку для CSV-версии объектов процессов в файлах форматирования не указан тип, эти объекты не приводятся к формату, к которому обычно приводятся стандартные объекты процессов.
Чтобы отобразить эти объекты, необходимо воспользоваться командлетами форматирования, такими как Format-Table и Format-List, или передать объекты командлету Out-GridView по конвейеру.
Пример 2
C:\PS>get-process | export-csv processes.csv -Delimiter :
C:\PS> $p = import-csv processes.csv -Delimiter :
Описание
-----------
В этом примере показано, как использовать параметр Delimiter командлета Import-CSV. В этом примере процессы экспортируются в файл, где в качестве разделителя используется знак двоеточия (:).
При импорте в файл командлет Import-CSV использует параметр Delimiter, чтобы задать используемый в этом файле разделитель.
Пример 3
C:\PS>$p = import-csv processes.csv -UseCulture
C:\PS> (get-culture).textinfo.listseparator
,
Описание
-----------
В этом примере демонстрируется использование параметра UseCulture командлета Import-CSV.
Первая команда импортирует объекты в файле Processes.csv в переменную $p. Она использует параметр UseCulture, чтобы указать, что командлет Import-CSV должен использовать разделитель элементов списка, определенный для текущей культуры.
Вторая команда отображает разделитель элементов списка для текущей культуры. С помощью командлета Get-Culture она получает текущее значение культуры. Используя обращение через точку (.), команда получает свойство TextInfo текущей культуры и свойство ListSeparator объекта TextInfo. В этом примере команда возвращает запятую.
Пример 4
C:\PS>start-job -scriptblock { get-process } | export-csv jobs.csv
C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"
# Delete header from file
C:\PS> $a = (get-content jobs.csv)
C:\PS> $a = $a[0], $a[2..($a.count - 1)]
C:\PS> $a > jobs.csv
C:\PS> $j = import-csv jobs.csv -header $header
C:\PS> $j
MoreData : True
StatusMessage :
Location : localhost
Command : get-process
State : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 135bdd25-40d6-4a20-bd68-05282a59abd6
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 командлета Import-CSV изменять имена свойств в конечном импортированном объекте.
Первая команда с помощью командлета Start-Job запускает на локальном компьютере фоновое задание, выполняющее команду Get-Process. С помощью оператора конвейера (|) полученный объект задания передается командлету Export-CSV, который преобразует его в формат CSV. С помощью оператора присваивания (=) полученные данные CSV сохраняются в файле Jobs.csv.
Вторая команда сохраняет заголовок в переменной $header. В отличие от заголовка по умолчанию, в этом заголовке вместо имени "HasMoreData" используется имя "MoreData", а вместо имени "JobStateInfo" — имя "State".
Следующие три команды удаляют исходный заголовок (вторую строку) из файла Jobs.csv.
Шестая команда с помощью командлета Import-CSV импортирует файл Jobs.csv и преобразует строки CSV в CSV-версию объекта задания. Параметр Header в этой команде используется для указания альтернативного заголовка. Результат сохраняется в переменной $j.
Седьмая команда выводит объект, сохраненный в переменной $j. Полученный объект имеет свойства "MoreData" и "State", как показано в результатах выполнения команды.
Пример 5
C:\PS>".\processes.csv" | import-csv
Описание
-----------
Эта команда импортирует объекты из файла Processes.csv.