Import-Csv
Membuat objek kustom seperti tabel dari item dalam file nilai yang dipisahkan karakter (CSV).
Sintaks
DelimiterPath (Default)
Import-Csv
[[-Delimiter] <Char>]
[-Path] <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
DelimiterLiteralPath
Import-Csv
[[-Delimiter] <Char>]
-LiteralPath <String[]>
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
CulturePath
Import-Csv
[-Path] <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
CultureLiteralPath
Import-Csv
-LiteralPath <String[]>
-UseCulture
[-Header <String[]>]
[-Encoding <Encoding>]
[<CommonParameters>]
Deskripsi
cmdlet Import-Csv membuat objek kustom seperti tabel dari item dalam file CSV. Setiap kolom dalam file CSV menjadi properti objek kustom dan item dalam baris menjadi nilai properti.
Import-Csv berfungsi pada file CSV apa pun, termasuk file yang dihasilkan oleh cmdlet Export-Csv.
Anda dapat menggunakan parameter cmdlet Import-Csv untuk menentukan baris header kolom dan pemisah item, atau Import-Csv langsung untuk menggunakan pemisah daftar untuk budaya saat ini sebagai pemisah item.
Anda juga dapat menggunakan cmdlet ConvertTo-Csv dan ConvertFrom-Csv untuk mengonversi objek ke string CSV (dan kembali). Cmdlet ini sama dengan cmdlet Export-Csv dan Import-Csv, kecuali bahwa cmdlet ini bekerja dengan data dari alur alih-alih dari file.
Jika entri baris header dalam file CSV berisi nilai kosong atau null, PowerShell menyisipkan nama baris header default dan menampilkan pesan peringatan.
Dimulai dengan PowerShell 6.0, Import-Csv sekarang mendukung Format File Log Yang Diperluas W3C.
Contoh
Contoh 1: Mengimpor objek proses
Contoh ini menunjukkan cara mengekspor lalu mengimpor file CSV objek proses.
Get-Process | Export-Csv -Path .\Processes.csv
$P = Import-Csv -Path .\Processes.csv
$P | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
BasePriority NoteProperty string BasePriority=8
Company NoteProperty string Company=Microsoft Corporation
...
$P | Format-Table
Name SI Handles VM WS PM NPM Path
---- -- ------- -- -- -- --- ----
ApplicationFrameHost 4 407 2199293489152 15884288 15151104 23792 C:\WINDOWS\system32\ApplicationFrameHost.exe
...
wininit 0 157 2199112204288 4591616 1630208 10376
winlogon 4 233 2199125549056 7659520 2826240 10992 C:\WINDOWS\System32\WinLogon.exe
WinStore.App 4 846 873435136 33652736 26607616 55432 C:\Program Files\WindowsApps\Microsoft.WindowsStore_11712.1001.13.0_x64__8weky...
WmiPrvSE 0 201 2199100219392 8830976 3297280 10632 C:\WINDOWS\system32\wbem\wmiprvse.exe
WmiPrvSE 0 407 2199157727232 18509824 12922880 16624 C:\WINDOWS\system32\wbem\wmiprvse.exe
WUDFHost 0 834 2199310204928 51945472 87441408 24984 C:\Windows\System32\WUDFHost.exe
Cmdlet Get-Process mengirim objek proses ke bawah alur ke Export-Csv. cmdlet Export-Csv mengonversi objek proses menjadi string CSV dan menyimpan string dalam file Processes.csv. Cmdlet Import-Csv mengimpor string CSV dari file Processes.csv.
String disimpan dalam variabel $P. Variabel $P dikirimkan alur ke cmdlet Get-Member yang menampilkan properti string CSV yang diimpor. Variabel $P dikirimkan alur ke cmdlet Format-Table dan menampilkan objek.
Contoh 2: Tentukan pemisah
Contoh ini menunjukkan cara menggunakan parameter Pemisah dari cmdlet Import-Csv.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Cmdlet Get-Process mengirim objek proses ke bawah alur ke Export-Csv. cmdlet Export-Csv mengonversi objek proses menjadi string CSV dan menyimpan string dalam file Processes.csv.
Parameter pemisah digunakan untuk menentukan pemisah titik dua. Cmdlet Import-Csv mengimpor string CSV dari file Processes.csv. String disimpan dalam variabel $P. Untuk $P variabel dikirimkan alur ke cmdlet Format-Table.
Contoh 3: Tentukan budaya saat ini untuk pemisah
Contoh ini menunjukkan cara menggunakan cmdlet Import-Csv dengan parameter UseCulture.
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Cmdlet Get-Culture menggunakan properti berlapis TextInfo dan ListSeparator untuk mendapatkan pemisah daftar default budaya saat ini. Cmdlet Get-Process mengirim objek proses ke bawah alur ke Export-Csv. cmdlet Export-Csv mengonversi objek proses menjadi string CSV dan menyimpan string dalam file Processes.csv. Parameter UseCulture menggunakan pemisah daftar default budaya saat ini. Cmdlet Import-Csv mengimpor string CSV dari file Processes.csv.
Contoh 4: Mengubah nama properti dalam objek yang diimpor
Contoh ini menunjukkan cara menggunakan parameter HeaderImport-Csv untuk mengubah nama properti dalam objek yang diimpor yang dihasilkan.
Start-Job -ScriptBlock { Get-Process } | Export-Csv -Path .\Jobs.csv -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command', 'StateInfo', 'Finished',
'InstanceId', 'Id', 'Name', 'ChildJobs', 'BeginTime', 'EndTime', 'JobType', 'Output',
'Error', 'Progress', 'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from file
$A = Get-Content -Path .\Jobs.csv
$A = $A[1..($A.Count - 1)]
$A | Out-File -FilePath .\Jobs.csv
$J = Import-Csv -Path .\Jobs.csv -Header $Header
$J
State : Running
MoreData : True
StatusMessage :
Location : localhost
Command : Get-Process
StateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : a259eb63-6824-4b97-a033-305108ae1c2e
Id : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime : 12/20/2018 18:59:57
EndTime :
JobType : BackgroundJob
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.Management.Automation.VerboseRecord]
Debug : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]
Cmdlet Start-Job memulai pekerjaan latar belakang yang berjalan Get-Process. Objek pekerjaan dikirimkan alur ke cmdlet Export-Csv dan dikonversi ke string CSV. Parameter NoTypeInformation menghapus header informasi jenis dari output CSV dan bersifat opsional di PowerShell v6 dan yang lebih tinggi. Variabel $Header berisi header kustom yang menggantikan nilai default berikut: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime, dan PSJobTypeName. Variabel $A menggunakan cmdlet Get-Content untuk mendapatkan string CSV dari file Jobs.csv. Variabel $A digunakan untuk menghapus header default dari file. Cmdlet Out-File menyimpan versi baru file Jobs.csv dalam variabel $A. Cmdlet Import-Csv mengimpor file Jobs.csv dan menggunakan parameter Header untuk menerapkan variabel $Header. Variabel $J berisi PSCustomObject yang diimpor dan menampilkan objek di konsol PowerShell.
Contoh 5: Membuat objek kustom menggunakan file CSV
Contoh ini memperlihatkan cara membuat objek kustom di PowerShell dengan menggunakan file CSV.
Get-Content -Path .\Links.csv
113207,about_Aliases
113208,about_Arithmetic_Operators
113209,about_Arrays
113210,about_Assignment_Operators
113212,about_Automatic_Variables
113213,about_Break
113214,about_Command_Precedence
113215,about_Command_Syntax
144309,about_Comment_Based_Help
113216,about_CommonParameters
113217,about_Comparison_Operators
113218,about_Continue
113219,about_Core_Commands
113220,about_Data_Section
$A = Import-Csv -Path .\Links.csv -Header 'LinkID', 'TopicTitle'
$A | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
LinkID NoteProperty string LinkID=113207
TopicTitle NoteProperty string TopicTitle=about_Aliases
$A | Where-Object -Property TopicTitle -Like '*alias*'
LinkID TopicTitle
------ ----------
113207 about_Aliases
Untuk membuat file Links.csv Anda, gunakan nilai yang diperlihatkan dalam output Get-Content.
Cmdlet Get-Content menampilkan file Links.csv. Cmdlet Import-Csv mengimpor file Links.csv. Parameter Header menentukan nama properti LinkId dan TopicTitle. Objek disimpan dalam variabel $A. Cmdlet Get-Member menunjukkan nama properti dari parameter Header. Cmdlet Where-Object memilih objek dengan properti TopicTitle yang menyertakan alias .
Contoh 6: Mengimpor CSV yang kehilangan nilai
Contoh ini memperlihatkan bagaimana cmdlet Import-Csv di PowerShell merespons saat baris header dalam file CSV menyertakan nilai null atau kosong.
Import-Csv menggantikan nama default untuk baris header yang hilang yang menjadi nama properti objek yang Import-Csv kembalikan.
Get-Content -Path .\Projects.csv
ProjectID,ProjectName,,Completed
13,Inventory,Redmond,True
440,,FarEast,True
469,Marketing,Europe,False
Import-Csv -Path .\Projects.csv
WARNING: One or more headers weren't specified. Default names starting with "H" have been used in
place of any missing headers.
ProjectID ProjectName H1 Completed
--------- ----------- -- ---------
13 Inventory Redmond True
440 FarEast True
469 Marketing Europe False
Cmdlet Get-Content menampilkan file Projects.csv. Baris header tidak memiliki nilai antara ProjectName dan Selesai. Cmdlet Import-Csv mengimpor file Projects.csv dan menampilkan pesan peringatan karena H1 adalah nama header default.
Parameter
-Delimiter
Menentukan pemisah yang memisahkan nilai properti dalam file 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.
Jika Anda menentukan karakter selain pemisah string aktual dalam file, Import-Csv tidak dapat membuat objek dari string CSV dan mengembalikan string CSV lengkap.
Properti parameter
| Jenis: | Char |
| Nilai default: | comma (,) |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
DelimiterPath
| Position: | 1 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
DelimiterLiteralPath
| Position: | 1 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Encoding
Menentukan pengodean untuk file CSV yang diimpor. Nilai defaultnya adalah utf8NoBOM.
Nilai yang dapat diterima untuk parameter ini adalah sebagai berikut:
-
ascii: Menggunakan pengodean untuk set karakter ASCII (7-bit). -
ansi: Menggunakan pengodean untuk halaman kode ANSI budaya saat ini. Opsi ini ditambahkan di PowerShell 7.4. -
bigendianunicode: Mengenkripsi dalam format UTF-16 menggunakan urutan byte big-endian. -
bigendianutf32: Mengenkode dalam format UTF-32 menggunakan urutan byte big-endian. -
oem: Menggunakan pengkodean default untuk program MS-DOS dan program konsol. -
unicode: Mengode dalam format UTF-16 menggunakan urutan byte little-endian. -
utf7: Mengodekan dalam format UTF-7. -
utf8: Mengodekan dalam format UTF-8. -
utf8BOM: Mengodekan dalam format UTF-8 dengan Byte Order Mark (BOM) -
utf8NoBOM: Mengodekan dalam format UTF-8 tanpa Byte Order Mark (BOM) -
utf32: Mengodekan dalam format UTF-32.
Dimulai dengan PowerShell 6.2, parameter Pengodean
Dimulai dengan PowerShell 7.4, Anda dapat menggunakan nilai
Nota
UTF-7* tidak lagi disarankan untuk digunakan. Sejak PowerShell 7.1, sebuah peringatan akan ditulis jika Anda menentukan utf7 untuk parameter Pengodean .
Properti parameter
| Jenis: | Encoding |
| Nilai default: | UTF8NoBOM |
| Nilai yang diterima: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Header
Menentukan baris header kolom alternatif untuk file yang diimpor. Header kolom menentukan nama properti objek yang dibuat oleh Import-Csv.
Masukkan header kolom sebagai daftar yang dipisahkan karakter. Jangan sertakan string header dalam tanda kutip. Sertakan setiap header kolom dalam tanda kutip tunggal.
Jika Anda memasukkan lebih sedikit header kolom daripada kolom data, kolom data yang tersisa akan dibuang. Jika Anda memasukkan lebih banyak header kolom daripada kolom data, header kolom tambahan dibuat dengan kolom data kosong.
Saat menggunakan parameter Header, hapus baris header asli dari file CSV. Jika tidak, Import-Csv membuat objek tambahan dari item di baris header.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LiteralPath
Menentukan jalur ke file CSV yang akan diimpor. Tidak seperti Path, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai wildcard. Jika jalur menyertakan karakter escape, bungkus jalur tersebut dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath, LP |
Set parameter
DelimiterLiteralPath
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
CultureLiteralPath
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Path
Menentukan jalur ke file CSV yang akan diimpor.
Anda juga dapat menyalurkan jalur ke Import-Csv.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
DelimiterPath
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
CulturePath
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| 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: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
CulturePath
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CultureLiteralPath
| Position: | Named |
| Wajib: | True |
| 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
String
Anda dapat menyalurkan string yang berisi jalur ke cmdlet ini.
Output
Object
Cmdlet ini mengembalikan objek yang dijelaskan oleh konten dalam file CSV.
Catatan
PowerShell menyertakan alias berikut untuk Import-Csv:
- Semua platform:
ipcsv
Karena objek yang diimpor adalah versi CSV dari jenis objek, objek tersebut tidak dikenali dan diformat oleh entri pemformatan jenis PowerShell yang memformat versi non-CSV dari jenis objek.
Hasil perintah Import-Csv adalah kumpulan string yang membentuk objek kustom seperti tabel. Setiap baris adalah string terpisah, sehingga Anda dapat menggunakan properti Count objek untuk menghitung baris tabel. Kolom adalah properti objek dan item dalam baris adalah nilai properti.
Baris header kolom menentukan jumlah kolom dan nama kolom. Nama kolom juga merupakan nama properti objek. Baris pertama ditafsirkan menjadi header kolom, kecuali Anda menggunakan parameter Header untuk menentukan header kolom. Jika ada baris yang memiliki lebih banyak nilai daripada baris header, nilai tambahan akan diabaikan.
Jika baris header kolom kehilangan nilai atau berisi nilai null atau kosong, Import-Csv menggunakan H diikuti dengan angka untuk header kolom dan nama properti yang hilang.
Dalam file CSV, setiap objek diwakili oleh daftar nilai properti objek yang dipisahkan karakter. Nilai properti dikonversi ke string dengan menggunakan metode ToString() objek, sehingga diwakili dengan nama nilai properti.
Export-Csv tidak mengekspor metode objek.
Import-Csv juga mendukung format W3C Extended Log. Baris yang dimulai dengan karakter hash (#) diperlakukan sebagai komentar dan diabaikan kecuali komentar dimulai dengan #Fields: dan berisi daftar nama kolom yang dibatasi. Dalam hal ini, cmdlet menggunakan nama kolom tersebut. Ini adalah format standar untuk Windows IIS dan log server web lainnya. Untuk informasi selengkapnya, lihat Format File Log yang Diperluas.