CSV(쉼표로 구분된 값) 파일의 개체 속성을 원래 개체의 CSV 버전으로 변환합니다.

구문

Import-CSV [[-Delimiter] <char>] [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]

Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]

설명

Import-CSV cmdlet은 Export-CSV cmdlet에서 생성하는 CSV 가변 길이 파일에서 개체를 만듭니다.

Import-CSV cmdlet의 매개 변수를 사용하여 결과 개체의 속성 이름을 결정하는 열 머리글 행을 지정하여 항목 구분 기호를 지정할 수도 있고, 현재 culture의 목록 구분 기호를 항목 구분 기호로 사용하도록 Import-CSV에 지시할 수도 있습니다.

Import-CSV가 만드는 개체는 원래 개체의 CSV 버전입니다. CSV 개체의 속성 값은 원래 개체 속성 값의 문자열 버전입니다. 개체의 CSV 버전에는 메서드가 없습니다.

ConvertTo-CSV 및 ConvertFrom-CSV cmdlet을 사용하여 개체를 CSV 문자열로 변환하거나 CSV 문자열을 개체로 변환할 수도 있습니다. 이 두 cmdlet은 CSV 문자열을 파일에 저장하지 않는다는 점을 제외하면 Export-CSV 및 Import-CSV cmdlet과 같습니다.

매개 변수

-Delimiter <char>

CSV 파일의 속성 값을 구분하는 구분 기호를 지정합니다. 기본값은 쉼표(,)입니다. 콜론(:)과 같은 문자를 입력합니다. 세미콜론(;)을 지정하려면 따옴표로 묶어야 합니다.

파일의 실제 문자열 구분 기호 이외의 문자를 지정하는 경우 Import-CSV는 CSV 문자열에서 개체를 만들 수 없습니다. 대신 이 cmdlet은 문자열을 반환합니다.

필수 여부

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

현재 culture의 목록 구분 기호를 항목 구분 기호로 사용합니다. 기본값은 쉼표(,)입니다.

culture에 대한 목록 구분 기호를 찾으려면 (Get-Culture).TextInfo.ListSeparator 명령을 사용합니다. CSV 문자열에 사용되는 구분 기호 이외의 문자를 지정하는 경우 ConvertFrom-CSV는 CSV 문자열에서 개체를 만들 수 없습니다. 대신 이 cmdlet은 문자열을 반환합니다.

필수 여부

true

위치

named

기본값

Comma

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_Commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

System.String

경로가 포함된 문자열을 Import-CSV로 파이프할 수 있습니다.

출력

개체

Import-CSV는 CSV 파일 내용으로 설명되는 개체를 반환합니다.

참고

가져온 개체는 개체 유형의 CSV 버전이므로 CSV가 아닌 개체 유형 버전 형식을 지정하는 Windows PowerShell 유형 형식 지정 항목을 통해 인식되지 않으며 형식이 지정되지도 않습니다.

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

설명
-----------
이 예에서는 Microsoft .NET Framework 개체의 CSV 파일을 내보낸 다음 가져오는 방법을 보여 줍니다.

첫 번째 명령은 Get-Process cmdlet을 사용하여 로컬 컴퓨터의 프로세스를 가져오며 파이프라인 연산자(|)를 사용하여 프로세스 개체를 Export-CSV cmdlet으로 보냅니다. 그러면 이 cmdlet은 프로세스 개체를 현재 디렉터리에 있는 Processes.csv 파일로 내보냅니다. 

두 번째 명령은 Import-CSV cmdlet을 사용하여 Import-CSV 파일의 프로세스를 가져옵니다. 그런 다음 결과 프로세스 개체를 $P 변수에 저장합니다.

세 번째 명령은 파이프라인 연산자를 사용하여 가져온 개체를 Get-Member cmdlet으로 파이프합니다. 이 작업의 결과에는 가져온 개체는 Get-Process가 반환하는 System.Diagnostic.Process 개체가 아니라 CSV:System.Diagnostic.Process 개체임이 표시됩니다.

또한 프로세스 개체의 CSV 버전에 대한 형식 지정 파일에는 항목 유형이 없으므로 이들 개체는 표준 프로세스 개체와 동일한 방식으로 형식이 지정되지 않습니다. 

개체를 표시하려면 Format-Table 및 Format-List와 같은 형식 지정 cmdlet을 사용하거나 개체를 Out-GridView로 파이프합니다.






예 2

C:\PS>get-process | export-csv processes.csv -Delimiter :

C:\PS> $p = import-csv processes.csv -Delimiter :

설명
-----------
이 예에서는 Import-CSV의 Delimiter 매개 변수를 사용하는 방법을 보여 줍니다. 이 예에서는 프로세스를 콜론(:)을 구분 기호로 사용하는 파일로 내보냅니다.

가져올 때 Import-CSV 파일은 Delimiter 매개 변수를 사용하여 파일에서 사용되는 구분 기호를 나타냅니다.






예 3

C:\PS>$p = import-csv processes.csv -UseCulture

C:\PS> (get-culture).textinfo.listseparator

,

설명
-----------
이 예에서는 Import-CSV의 UseCulture 매개 변수를 사용하는 방법을 보여 줍니다.

첫 번째 명령은 Processes.csv 파일의 개체를 $p 변수로 가져옵니다. 이 명령은 UseCulture 매개 변수를 사용하여 현재 culture에 대해 정의된 목록 구분 기호를 사용하도록 Import-CSV에 지시합니다.

두 번째 명령은 현재 culture의 목록 구분 기호를 표시합니다. 이 명령은 Get-Culture cmdlet을 사용하여 현재 culture를 가져오며 점(.) 방법을 사용하여 현재 culture의 TextInfo 속성과 TextInfo에 포함된 개체의 ListSeparator 속성을 가져옵니다. 이 예에서 명령은 쉼표를 반환합니다.






예 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  :

설명
-----------
이 예에서는 Import-CSV의 Header 매개 변수를 사용하여 결과로 가져온 개체의 속성 이름을 변경하는 방법을 보여 줍니다.

첫 번째 명령은 Start-Job cmdlet을 사용하여 로컬 컴퓨터에서 Get-Process 명령을 실행하는 백그라운드 작업을 시작합니다. 파이프라인 연산자(|)가 Export-CSV cmdlet으로 결과 작업 개체를 보내면 이 cmdlet이 작업 개체를 CSV 형식으로 변환합니다. 그러면 할당 연산자(=)가 결과 CSV를 Jobs.csv 파일에 저장합니다.

두 번째 명령은 머리글을 $header 변수에 저장합니다. 기본 머리글과 달리 이 머리글은 "HasMoreData" 대신 "MoreData"를, "JobStateInfo" 대신 "State"를 사용합니다.

다음의 세 명령은 Jobs.csv 파일에서 원래 머리글(두 번째 줄)을 삭제합니다.  

여섯 번째 명령은 Import-CSV cmdlet을 사용하여 Jobs.csv 파일을 가져오고 CSV 문자열을 작업 개체의 CSV 버전으로 변환합니다. 이 명령은 Header 매개 변수를 사용하여 대체 머리글을 전송합니다. 그 결과는 $j 변수에 저장됩니다. 

일곱 번째 명령은 개체를 $j 변수에 표시합니다. 명령 출력에 나와 있는 것처럼 결과 개체에는 "MoreData" 및 "State" 속성이 있습니다.






예 5

C:\PS>".\processes.csv" | import-csv

설명
-----------
이 명령은 Processes.csv 파일에서 개체를 가져옵니다.






참고 항목




목차