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


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.





См. также

Концепции

Export-CSV
ConvertTo-CSV
ConvertFrom-CSV