ConvertTo-Csv
Mengonversi objek .NET menjadi serangkaian string nilai yang dipisahkan karakter (CSV).
Sintaks
Delimiter (Default)
ConvertTo-Csv
[-InputObject] <PSObject>
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
UseCulture
ConvertTo-Csv
[-InputObject] <PSObject>
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[<CommonParameters>]
Deskripsi
Cmdlet ConvertTo-Csv mengembalikan serangkaian string nilai yang dipisahkan karakter (CSV) yang mewakili objek yang Anda kirimkan. Anda kemudian dapat menggunakan cmdlet ConvertFrom-Csv untuk membuat ulang objek dari string CSV. Objek yang dikonversi dari CSV adalah nilai string dari objek asli yang berisi nilai properti dan tanpa metode.
Anda dapat menggunakan cmdlet Export-Csv untuk mengonversi objek ke string CSV.
Export-Csv mirip dengan ConvertTo-Csv, kecuali menyimpan string CSV ke file.
cmdlet ConvertTo-Csv memiliki parameter untuk menentukan pemisah selain koma atau menggunakan budaya saat ini sebagai pemisah.
Contoh
Contoh 1: Mengonversi objek ke CSV
Contoh ini mengonversi objek Proses menjadi string 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 mendapatkan objek Proses dan menggunakan parameter Nama untuk menentukan proses PowerShell. Objek proses dikirimkan alur ke cmdlet ConvertTo-Csv. cmdlet ConvertTo-Csv mengonversi objek menjadi string CSV. Parameter NoTypeInformation menghapus header informasi #TYPE dari output CSV dan tidak diperlukan di PowerShell 6.
Contoh 2: Mengonversi objek DateTime ke CSV
Contoh ini mengonversi objek DateTime menjadi string 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 mendapatkan objek DateTime dan menyimpannya dalam variabel $Date. Cmdlet ConvertTo-Csv mengonversi objek DateTime menjadi string. Parameter InputObject menggunakan objek DateTime yang disimpan dalam variabel $Date. Parameter pemisah menentukan titik koma untuk memisahkan nilai string. Parameter NoTypeInformation menghapus header informasi #TYPE dari output CSV dan tidak diperlukan di PowerShell 6.
Contoh 3: Mengonversi log peristiwa PowerShell ke CSV
Contoh ini mengonversi log peristiwa Windows untuk PowerShell menjadi serangkaian string 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 menggunakan properti berlapis TextInfo dan ListSeparator dan menampilkan pemisah daftar default budaya saat ini. Cmdlet Get-WinEvent mendapatkan objek log peristiwa dan menggunakan parameter LogName untuk menentukan nama file log. Objek log peristiwa dikirimkan alur ke cmdlet ConvertTo-Csv. cmdlet ConvertTo-Csv mengonversi objek log peristiwa menjadi serangkaian string CSV. Parameter UseCulture menggunakan pemisah daftar default budaya saat ini sebagai pemisah. Parameter NoTypeInformation menghapus header informasi #TYPE dari output CSV dan tidak diperlukan di PowerShell 6.
Contoh 4: Konversi ke CSV dengan tanda kutip di sekitar dua kolom
Contoh ini mengonversi objek DateTime menjadi string 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
Contoh 5: Konversi ke CSV hanya dengan tanda kutip saat diperlukan
Contoh ini mengonversi objek DateTime menjadi string 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
Contoh 6: Mengonversi hashtable ke CSV
Di PowerShell 7.2 ke atas, saat Anda mengonversi hashtable ke CSV, kunci hashtable pertama diserialisasikan dan digunakan sebagai header dalam output.
$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"
Contoh 7: Mengonversi hashtable ke CSV dengan properti tambahan
Di PowerShell 7.2 ke atas, saat Anda mengonversi hashtable yang memiliki properti tambahan yang ditambahkan dengan Add-Member atau Select-Object properti tambahan juga ditambahkan sebagai header dalam output CSV.
$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
Setiap hashtable memiliki properti bernama ExtraProp ditambahkan oleh Add-Member lalu dikonversi ke CSV. Anda dapat melihat ExtraProp sekarang menjadi header dalam output.
Jika properti yang ditambahkan memiliki nama yang sama dengan kunci dari hashtable, kunci diutamakan dan hanya kunci yang dikonversi ke CSV.
Parameter
-Delimiter
Menentukan pemisah untuk memisahkan nilai properti dalam string CSV. Defaultnya adalah koma (,).
Masukkan karakter, seperti titik dua (:). Untuk menentukan titik koma (;), sertakan dalam tanda kutip tunggal. Untuk menentukan karakter khusus yang lolos seperti tab (`t), sertakan dalam tanda kutip ganda.
Properti parameter
| Jenis: | Char |
| Nilai default: | comma (,) |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
Delimiter
| Position: | 1 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-IncludeTypeInformation
Ketika parameter ini digunakan baris pertama output berisi #TYPE diikuti dengan nama yang sepenuhnya memenuhi syarat dari jenis objek. Contohnya, #TYPE System.Diagnostics.Process.
Parameter ini diperkenalkan di PowerShell 6.0.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | ITI |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-InputObject
Menentukan objek yang dikonversi ke string CSV. Masukkan variabel yang berisi objek atau ketik perintah atau ekspresi yang mendapatkan objek. Anda juga dapat menyalurkan objek ke ConvertTo-Csv.
Properti parameter
| Jenis: | PSObject |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-NoHeader
Saat parameter ini digunakan, cmdlet tidak menulis baris header yang berisi nama kolom ke output.
Parameter ini ditambahkan di PowerShell 7.4.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-NoTypeInformation
Menghapus header informasi #TYPE dari output. Parameter ini menjadi default di PowerShell 6.0 dan disertakan untuk kompatibilitas mundur.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | NTI |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-QuoteFields
Menentukan nama kolom yang harus dikutip. Ketika parameter ini hanya digunakan kolom yang ditentukan yang dikutip. Parameter ini ditambahkan di PowerShell 7.0.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | QF |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-UseCulture
Menggunakan pemisah daftar untuk budaya saat ini sebagai pemisah item. Untuk menemukan pemisah daftar untuk budaya, gunakan perintah berikut: (Get-Culture).TextInfo.ListSeparator.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
UseCulture
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-UseQuotes
Menentukan kapan tanda kutip digunakan dalam file CSV. Nilai yang mungkin adalah:
- Jangan pernah - jangan kutip apa-apa
- Always - kutip semuanya (perilaku default)
- AsNeeded - hanya bidang kutipan yang berisi karakter pemisah, tanda kutip ganda, atau karakter baris baru
Parameter ini ditambahkan di PowerShell 7.0.
Properti parameter
| Jenis: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
| Nilai default: | Always |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | UQ |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
PSObject
Anda dapat menyalurkan objek apa pun yang memiliki adaptor Extended Type System (ETS) ke cmdlet ini.
Output
String
Cmdlet ini mengembalikan satu atau beberapa string yang mewakili setiap objek yang dikonversi.
Catatan
Dalam format CSV, setiap objek diwakili oleh daftar nilai propertinya yang dipisahkan karakter. Nilai properti dikonversi ke string menggunakan metode ToString() objek. String diwakili oleh nama nilai properti.
ConvertTo-Csv tidak mengekspor metode objek.
String CSV adalah output sebagai berikut:
- Jika IncludeTypeInformation digunakan, string pertama terdiri dari #TYPE diikuti dengan nama tipe objek yang sepenuhnya memenuhi syarat. Misalnya, #TYPE System.Diagnostics.Process.
- Jika IncludeTypeInformation tidak digunakan, string pertama menyertakan header kolom. Header berisi nama properti objek pertama sebagai daftar yang dipisahkan karakter.
- String yang tersisa berisi daftar yang dipisahkan karakter dari setiap nilai properti objek.
Dimulai dengan PowerShell 6.0 perilaku default ConvertTo-Csv adalah tidak menyertakan informasi #TYPE dalam CSV dan NoTypeInformation tersirat.
IncludeTypeInformation dapat digunakan untuk menyertakan informasi #TYPE dan meniru perilaku default ConvertTo-Csv sebelum PowerShell 6.0.
Saat Anda mengirimkan beberapa objek ke ConvertTo-Csv, ConvertTo-Csv mengurutkan string berdasarkan properti objek pertama yang Anda kirimkan. Jika objek yang tersisa tidak memiliki salah satu properti yang ditentukan, nilai properti objek tersebut adalah Null, seperti yang diwakili oleh dua koma berturut-turut. Jika objek yang tersisa memiliki properti tambahan, nilai properti tersebut diabaikan.