ConvertTo-Csv
.NET 개체를 일련의 CSV(문자로 구분된 값) 문자열로 변환합니다.
구문
ConvertTo-Csv
[-InputObject] <PSObject>
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
Description
이 cmdlet은 ConvertTo-CSV
제출하는 개체를 나타내는 일련의 CSV(문자 구분 값) 문자열을 반환합니다. 그런 다음 cmdlet을 ConvertFrom-Csv
사용하여 CSV 문자열에서 개체를 다시 만들 수 있습니다. CSV에서 변환된 개체는 속성 값과 메서드가 없는 원래 개체의 문자열 값입니다.
cmdlet을 Export-Csv
사용하여 개체를 CSV 문자열로 변환할 수 있습니다. Export-CSV
은 CSV 문자열을 파일에 저장한다는 점을 제외하고 유사 ConvertTo-CSV
합니다.
cmdlet에는 ConvertTo-CSV
쉼표 이외의 구분 기호를 지정하거나 현재 문화권을 구분 기호로 사용하는 매개 변수가 있습니다.
예제
예제 1: 개체를 CSV로 변환
다음은 Process 개체를 CSV 문자열로 변환하는 예제입니다.
Get-Process -Name pwsh | ConvertTo-Csv -NoTypeInformation
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"pwsh","8","950","2204001161216","100925440","59686912","67104", ...
cmdlet은 Get-Process
Process 개체를 가져오고 Name 매개 변수를 사용하여 PowerShell 프로세스를 지정합니다. 프로세스 개체는 파이프라인을 cmdlet으로 ConvertTo-CSV
보냅니다. cmdlet은 ConvertTo-CSV
개체를 CSV 문자열로 변환합니다. NoTypeInformation 매개 변수는 CSV 출력에서 #TYPE 정보 헤더를 제거하며 PowerShell 6에는 필요하지 않습니다.
예제 2: DateTime 개체를 CSV로 변환
다음은 DateTime 개체를 CSV 문자열로 변환하는 예제입니다.
$Date = Get-Date
ConvertTo-Csv -InputObject $Date -Delimiter ';' -NoTypeInformation
"DisplayHint";"DateTime";"Date";"Day";"DayOfWeek";"DayOfYear";"Hour";"Kind";"Millisecond";"Minute";"Month";"Second";"Ticks";"TimeOfDay";"Year"
"DateTime";"Friday, January 4, 2019 14:40:51";"1/4/2019 00:00:00";"4";"Friday";"4";"14";"Local";"711";"40";"1";"51";"636822096517114991";"14:40:51.7114991";"2019"
cmdlet은 Get-Date
DateTime 개체를 가져오고 변수에 $Date
저장합니다. cmdlet은 ConvertTo-Csv
DateTime 개체를 문자열로 변환합니다. InputObject 매개 변수는 변수에 저장된 DateTime 개체를 $Date
사용합니다. 구분 기호 매개 변수는 문자열 값을 구분하는 세미콜론을 지정합니다. NoTypeInformation 매개 변수는 CSV 출력에서 #TYPE 정보 헤더를 제거하며 PowerShell 6에는 필요하지 않습니다.
예제 3: PowerShell 이벤트 로그를 CSV로 변환
다음은 PowerShell에 대한 Windows 이벤트 로그를 일련의 CSV 문자열로 변환하는 예제입니다.
(Get-Culture).TextInfo.ListSeparator
Get-WinEvent -LogName 'PowerShellCore/Operational' | ConvertTo-Csv -UseCulture -NoTypeInformation
,
"Message","Id","Version","Qualifiers","Level","Task","Opcode","Keywords","RecordId", ...
"Error Message = System error""4100","1",,"3","106","19","0","31716","PowerShellCore", ...
cmdlet은 Get-Culture
TextInfo 및 ListSeparator 중첩 속성을 사용하고 현재 문화권의 기본 목록 구분 기호를 표시합니다. cmdlet은 Get-WinEvent
이벤트 로그 개체를 가져오고 LogName 매개 변수를 사용하여 로그 파일 이름을 지정합니다. 이벤트 로그 개체는 파이프라인을 cmdlet으로 ConvertTo-Csv
보냅니다. cmdlet은 ConvertTo-Csv
이벤트 로그 개체를 일련의 CSV 문자열로 변환합니다. UseCulture 매개 변수는 현재 문화권의 기본 목록 구분 기호를 구분 기호로 사용합니다. NoTypeInformation 매개 변수는 CSV 출력에서 #TYPE 정보 헤더를 제거하며 PowerShell 6에는 필요하지 않습니다.
예제 4: 두 열 주위에 따옴표가 있는 CSV로 변환
다음은 DateTime 개체를 CSV 문자열로 변환하는 예제입니다.
Get-Date | ConvertTo-Csv -QuoteFields "DateTime","Date"
DisplayHint,"DateTime","Date",Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:27:34 AM","8/22/2019 12:00:00 AM",22,Thursday,234,11,Local,569,27,8,34,637020700545699784,11:27:34.5699784,2019
예제 5: 필요한 경우에만 따옴표를 사용하여 CSV로 변환
다음은 DateTime 개체를 CSV 문자열로 변환하는 예제입니다.
Get-Date | ConvertTo-Csv -UseQuotes AsNeeded
DisplayHint,DateTime,Date,Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:31:00 AM",8/22/2019 12:00:00 AM,22,Thursday,234,11,Local,713,31,8,0,637020702607132640,11:31:00.7132640,2019
예제 6: 해시 테이블을 CSV로 변환
PowerShell 7.2 이상에서는 해시 테이블을 CSV로 변환할 때 첫 번째 해시 테이블의 키가 직렬화되어 출력의 헤더로 사용됩니다.
$person1 = @{
Name = 'John Smith'
Number = 1
}
$person2 = @{
Name = 'Jane Smith'
Number = 2
}
$allPeople = $person1, $person2
$allPeople | ConvertTo-Csv
"Name","Number"
"John Smith","1"
"Jane Smith","2"
예제 7: 추가 속성을 사용하여 해시 테이블을 CSV로 변환
PowerShell 7.2 이상에서는 추가 속성이 추가 Add-Member
된 해시 테이블을 변환하거나 Select-Object
추가 속성도 CSV 출력의 헤더로 추가됩니다.
$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
각 해시 테이블은 CSV에 의해 추가된 Add-Member
다음, CSV로 변환되는 속성이 있습니다ExtraProp
. 이제 출력의 헤더를 볼 ExtraProp
수 있습니다.
추가된 속성의 이름이 해시 테이블의 키와 동일한 경우 키가 우선하며 키만 CSV로 변환됩니다.
매개 변수
-Delimiter
CSV 문자열에서 속성 값을 구분할 구분 기호를 지정합니다. 기본값은 쉼표(,
)입니다. 콜론(:
)과 같은 문자를 입력합니다. 세미콜론(;
)을 지정하려면 작은따옴표로 묶습니다.
형식: | Char |
Position: | 1 |
Default value: | comma (,) |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-IncludeTypeInformation
이 매개 변수를 사용하는 경우 출력의 첫 번째 줄 다음에 개체 형식의 정규화된 이름이 포함 #TYPE
됩니다. 예들 들어 #TYPE System.Diagnostics.Process
입니다.
이 매개 변수는 PowerShell 6.0에서 도입되었습니다.
형식: | SwitchParameter |
별칭: | ITI |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-InputObject
CSV 문자열로 변환되는 개체를 지정합니다. 개체를 포함하는 변수를 입력하거나 개체를 가져오는 명령이나 식을 입력합니다. 개체를 으로 파이프할 ConvertTo-CSV
수도 있습니다.
형식: | PSObject |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-NoHeader
이 매개 변수를 사용하면 cmdlet은 열 이름이 포함된 머리글 행을 출력에 쓰지 않습니다.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-NoTypeInformation
출력에서 #TYPE
정보 헤더를 제거합니다. 이 매개 변수는 PowerShell 6.0의 기본값이 되었으며 이전 버전과의 호환성을 위해 포함됩니다.
형식: | SwitchParameter |
별칭: | NTI |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-QuoteFields
따옴표로 묶어야 하는 열의 이름을 지정합니다. 이 매개 변수를 사용하는 경우 지정된 열만 따옴표로 묶습니다. 이 매개 변수는 PowerShell 7.0에 추가되었습니다.
형식: | String[] |
별칭: | QF |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-UseCulture
현재 문화권의 목록 구분 기호를 항목 구분 기호로 사용합니다. 문화권의 목록 구분 기호를 찾으려면 다음 명령을 (Get-Culture).TextInfo.ListSeparator
사용합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-UseQuotes
CSV 파일에서 따옴표가 사용되는 시기를 지정합니다. 가능한 값은 다음과 같습니다.
- 절대 - 아무 것도 인용하지 마세요.
- 항상 - 모든 항목 인용(기본 동작)
- AsNeeded - 구분 기호 문자, 큰따옴표 또는 줄 바꿈 문자가 포함된 따옴표 필드만
이 매개 변수는 PowerShell 7.0에 추가되었습니다.
형식: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
별칭: | UQ |
Position: | Named |
Default value: | Always |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
ETS(확장 형식 시스템) 어댑터가 있는 모든 개체를 이 cmdlet으로 파이프할 수 있습니다.
출력
이 cmdlet은 변환된 각 개체를 나타내는 하나 이상의 문자열을 반환합니다.
참고
CSV 형식에서 각 개체는 속성 값의 문자로 구분된 목록으로 표시됩니다. 속성 값은 개체의 ToString() 메서드를 사용하여 문자열로 변환됩니다. 문자열은 속성 값 이름으로 표시됩니다. ConvertTo-CSV
는 개체의 메서드를 내보내지 않습니다.
CSV 문자열은 다음과 같이 출력됩니다.
- IncludeTypeInformation을 사용하는 경우 첫 번째 문자열은 개체 형식의 정규화된 이름 뒤에 #TYPE 구성됩니다. 예를 들어 system.Diagnostics.Process를 #TYPE.
- IncludeTypeInformation을 사용하지 않는 경우 첫 번째 문자열에는 열 머리글이 포함됩니다. 머리글에는 첫 번째 개체의 속성 이름이 문자로 구분된 목록으로 포함됩니다.
- 나머지 문자열에는 각 개체의 속성 값에 대한 문자로 구분된 목록이 포함됩니다.
PowerShell 6.0부터 기본 동작 ConvertTo-CSV
은 CSV에 #TYPE 정보를 포함하지 않는 것이며 NoTypeInformation은 암시됩니다. IncludeTypeInformation을 사용하여 #TYPE 정보를 포함하고 PowerShell 6.0 이전의 ConvertTo-CSV
기본 동작을 에뮬레이트할 수 있습니다.
여러 개체를 ConvertTo-CSV
ConvertTo-CSV
제출할 때 제출하는 첫 번째 개체의 속성에 따라 문자열을 정렬합니다. 나머지 개체에 지정된 속성 중 하나가 없으면 두 개의 연속된 쉼표로 표시된 대로 해당 개체의 속성 값이 Null입니다. 나머지 개체에 추가 속성이 있으면 해당 속성 값은 무시됩니다.
관련 링크
PowerShell