Import-Csv
Karakterle ayrılmış değer (CSV) dosyasındaki öğelerden tablo benzeri özel nesneler oluşturur.
Sözdizimi
DelimiterPath EnterprisePublishing
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>]
Description
Import-Csv cmdlet'i CSV dosyalarındaki öğelerden tablo benzeri özel nesneler oluşturur. CSV dosyasındaki her sütun özel nesnenin özelliğine, satırlardaki öğeler ise özellik değerlerine dönüşür.
Import-Csv, Export-Csv cmdlet'i tarafından oluşturulan dosyalar da dahil olmak üzere herhangi bir CSV dosyasında çalışır.
Sütun üst bilgisi satırını ve öğe sınırlayıcısını belirtmek için Import-Csv cmdlet'in parametrelerini kullanabilir veya Import-Csv öğe sınırlayıcısı olarak geçerli kültür için liste ayırıcısını kullanmaya yönlendirebilirsiniz.
Nesneleri CSV dizelerine (ve geri) dönüştürmek için ConvertTo-Csv ve ConvertFrom-Csv cmdlet'lerini de kullanabilirsiniz. Bu cmdlet'ler Export-Csv ve Import-Csv cmdlet'leriyle aynıdır, ancak dosyalar yerine işlem hattındaki verilerle çalışırlar.
CSV dosyasındaki üst bilgi satırı girdisi boş veya null değer içeriyorsa, PowerShell varsayılan bir üst bilgi satırı adı ekler ve bir uyarı iletisi görüntüler.
PowerShell 6.0'dan başlayarak Import-Csv artık W3C Genişletilmiş Günlük Dosyası Biçimini destekliyor.
Örnekler
Örnek 1: İşlem nesnelerini içeri aktarma
Bu örnekte, işlem nesnelerinin CSV dosyasının nasıl dışarı ve sonra içeri aktarılacağını gösterilmektedir.
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
Get-Process cmdlet'i işlem hattının aşağısına işlem nesnelerini Export-Csvgönderir.
Export-Csv cmdlet'i, işlem nesnelerini CSV dizelerine dönüştürür ve dizeleri Processes.csv dosyasına kaydeder.
Import-Csv cmdlet'i, csv dizelerini Processes.csv dosyasından içeri aktarır.
Dizeler $P değişkenine kaydedilir.
$P değişkeni, içeri aktarılan CSV dizelerinin özelliklerini görüntüleyen Get-Member cmdlet'ine işlem hattına gönderilir.
$P değişkeni işlem hattından Format-Table cmdlet'ine gönderilir ve nesneleri görüntüler.
Örnek 2: Sınırlayıcıyı belirtme
Bu örnekte, cmdlet'in Import-Csv parametresinin nasıl kullanılacağı gösterilmektedir.
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table
Get-Process cmdlet'i işlem hattının aşağısına işlem nesnelerini Export-Csvgönderir.
Export-Csv cmdlet'i, işlem nesnelerini CSV dizelerine dönüştürür ve dizeleri Processes.csv dosyasına kaydeder.
İki nokta üst üste sınırlayıcı belirtmek için Sınırlayıcı parametresi kullanılır.
Import-Csv cmdlet'i, csv dizelerini Processes.csv dosyasından içeri aktarır. Dizeler $P değişkenine kaydedilir.
$P değişkenine işlem hattı Format-Table cmdlet'ine gönderilir.
Örnek 3: Sınırlayıcı için geçerli kültürü belirtin
Bu örnekte, Import-Csv cmdlet'in UseCulture parametresiyle nasıl kullanılacağı gösterilmektedir.
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture
Import-Csv -Path .\Processes.csv -UseCulture
Get-Culture cmdlet'i, geçerli kültürün varsayılan liste ayırıcısını almak için TextInfo ve ListSeparator iç içe özellikleri kullanır.
Get-Process cmdlet'i işlem hattının aşağısına işlem nesnelerini Export-Csvgönderir.
Export-Csv cmdlet'i, işlem nesnelerini CSV dizelerine dönüştürür ve dizeleri Processes.csv dosyasına kaydeder.
UseCulture parametresi geçerli kültürün varsayılan liste ayırıcısını kullanır.
Import-Csv cmdlet'i, csv dizelerini Processes.csv dosyasından içeri aktarır.
Örnek 4: İçeri aktarılan nesnedeki özellik adlarını değiştirme
Bu örnekte, elde edilen içeri aktarılan nesnedeki özelliklerin adlarını değiştirmek için Import-Csv parametresinin nasıl kullanılacağı gösterilmektedir.
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]
Start-Job cmdlet'i Get-Processçalıştıran bir arka plan işi başlatır. bir iş nesnesi işlem hattı Export-Csv cmdlet'ine gönderilir ve bir CSV dizesine dönüştürülür.
NoTypeInformation parametresi, CSV çıktısından tür bilgisi üst bilgisini kaldırır ve PowerShell v6 ve üzeri sürümlerde isteğe bağlıdır.
$Header değişkeni şu varsayılan değerlerin yerini alan özel bir üst bilgi içerir: HasMoreData, JobStateInfo, PSBeginTime, PSEndTimeve PSJobTypeName.
$A değişkeni, csv dizesini Jobs.csv dosyasından almak için Get-Content cmdlet'ini kullanır.
$A değişkeni, varsayılan üst bilgiyi dosyadan kaldırmak için kullanılır.
Out-File cmdlet'i Jobs.csv dosyasının yeni sürümünü $A değişkenine kaydeder.
Import-Csv cmdlet'i Jobs.csv dosyasını içeri aktarır ve değişkenini uygulamak için $Header parametresini kullanır.
$J değişkeni, PSCustomObject içeri aktarılan içerir ve nesneyi PowerShell konsolunda görüntüler.
Örnek 5: CSV dosyası kullanarak özel nesne oluşturma
Bu örnekte, CSV dosyası kullanarak PowerShell'de özel nesne oluşturma işlemi gösterilmektedir.
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
Links.csv dosyanızı oluşturmak için Get-Content çıktısında gösterilen değerleri kullanın.
Get-Content cmdlet'i Links.csv dosyasını görüntüler.
Import-Csv cmdlet'i Links.csv dosyasını içeri aktarır.
Üst Bilgisi parametresi, LinkId ve TopicTitle özellik adlarını belirtir. Nesneler $A değişkeninde depolanır.
Get-Member cmdlet'i Header parametresindeki özellik adlarını gösterir.
Where-Object cmdlet'i, diğer adiçeren TopicTitle özelliğine sahip nesneleri seçer.
Örnek 6: Değeri eksik bir CSV'i içeri aktarma
Bu örnekte, BIR CSV dosyasındaki üst bilgi satırında null veya boş bir değer bulunduğunda PowerShell'deki Import-Csv cmdlet'inin nasıl yanıt verdiği gösterilir.
Import-Csv, Import-Csv döndürdüğü nesnenin özellik adı haline gelen eksik üst bilgi satırı için varsayılan bir ad kullanır.
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
Get-Content cmdlet'i Projects.csv dosyasını görüntüler.
ProjectName ile Tamamlandıarasında üst bilgi satırında bir değer eksik.
Import-Csv cmdlet'i Projects.csv dosyasını içeri aktarır ve H1 varsayılan üst bilgi adı olduğundan bir uyarı iletisi görüntüler.
Parametreler
-Delimiter
CSV dosyasındaki özellik değerlerini ayıran sınırlayıcıyı belirtir. Varsayılan değer virgüldür (,).
Bir karakter girin, örneğin iki nokta üst üste (:). Noktalı virgülü (;) belirtmek için onu tek tırnak işaretleri içine alın. Sekme (`t) gibi kaçış özel karakterlerini belirtmek için çift tırnak içine alın.
Dosyadaki gerçek dize sınırlayıcısı dışında bir karakter belirtirseniz, Import-Csv CSV dizelerinden nesneleri oluşturamaz ve tam CSV dizelerini döndürür.
Parametre özellikleri
| Tür: | Char |
| Default value: | comma (,) |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
DelimiterPath
| Position: | 1 |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
DelimiterLiteralPath
| Position: | 1 |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Encoding
İçeri aktarılan CSV dosyasının kodlamasını belirtir. Varsayılan değer şudur: utf8NoBOM.
Bu parametre için kabul edilebilir değerler aşağıdaki gibidir:
-
ascii: ASCII (7 bit) karakter kümesi için kodlamayı kullanır. -
ansi: Geçerli kültürün ANSI kod sayfasının kodlamasını kullanır. Bu seçenek PowerShell 7.4'e eklendi. -
bigendianunicode: Büyük endian bayt sırasını kullanarak UTF-16 biçiminde kodlar. -
bigendianutf32: Büyük endian bayt sırasını kullanarak UTF-32 biçiminde kodlar. -
oem: MS-DOS ve konsol programları için varsayılan kodlamayı kullanır. -
unicode: Küçük-öncelikli bayt sırası kullanılarak UTF-16 biçiminde kodlanır. -
utf7: UTF-7 biçiminde kodlar. -
utf8: UTF-8 biçiminde kodlar. -
utf8BOM: Bayt Sırası İşareti (BOM) ile UTF-8 biçiminde kodlar -
utf8NoBOM: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlar -
utf32: UTF-32 biçiminde kodlar.
PowerShell 6.2'den başlayarak, Kodlama parametresi, kayıtlı kod sayfalarının sayısal kimliklerine (-Encoding 1251gibi) veya kayıtlı kod sayfalarının dize adlarına (-Encoding "windows-1251"gibi) de izin verir. Daha fazla bilgi için Encoding.CodePageiçin .NET belgelerine bakın.
PowerShell 7.4'den başlayarak, Ansi parametresinin değerini kullanarak geçerli kültürün ANSI kod sayfasının sayısal kimliğini el ile belirtmek zorunda kalmadan geçirebilirsiniz.
Uyarı
UTF-7* artık kullanılması önerilmez. PowerShell 7.1'den itibaren, utf7 parametresi için belirtirseniz bir uyarı yazılır.
Parametre özellikleri
| Tür: | Encoding |
| Default value: | UTF8NoBOM |
| Kabul edilen değerler: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Header
İçeri aktarılan dosya için alternatif bir sütun üst bilgisi satırı belirtir. sütun başlığı, Import-Csvtarafından oluşturulan nesnelerin özellik adlarını belirler.
Sütun başlıklarını karakterle ayrılmış liste olarak girin. Üst bilgi dizesini tırnak içine alma. Her sütun başlığını tek tırnak içine alın.
Veri sütunlarından daha az sütun başlığı girerseniz, kalan veri sütunları atılır. Veri sütunlarından daha fazla sütun başlığı girerseniz, ek sütun başlıkları boş veri sütunlarıyla oluşturulur.
Üst Bilgi parametresini kullanırken, CSV dosyasından özgün üst bilgi satırını silin. Aksi takdirde, Import-Csv üst bilgi satırındaki öğelerden ek bir nesne oluşturur.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-LiteralPath
İçeri aktaracak CSV dosyasının yolunu belirtir. Path'in aksine, LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, yolu tek tırnak işaretleriyle çevreleyin. Tek tırnak işaretleri, PowerShell'in hiçbir karakteri kaçış dizisi olarak yorumlamamasını sağlar.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | PSPath, LP |
Parametre kümeleri
DelimiterLiteralPath
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CultureLiteralPath
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Path
İçeri aktaracak CSV dosyasının yolunu belirtir.
Import-Csvyolunu da kanala ekleyebilirsiniz.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
DelimiterPath
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CulturePath
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-UseCulture
Öğe sınırlayıcısı olarak geçerli kültür için liste ayırıcısını kullanır. Bir kültürün liste ayırıcısını bulmak için şu komutu kullanın: (Get-Culture).TextInfo.ListSeparator.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
CulturePath
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CultureLiteralPath
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.
Girişler
String
Bu cmdlet'e bir yolu içeren bir dizeyi aktarabilirsiniz.
Çıkışlar
Object
Bu cmdlet, CSV dosyasındaki içerik tarafından açıklanan nesneleri döndürür.
Notlar
PowerShell, Import-Csviçin aşağıdaki diğer adları içerir:
- Tüm platformlar:
ipcsv
İçeri aktarılan nesneler nesne türünün CSV sürümleri olduğundan, nesne türünün CSV olmayan sürümlerini biçimlendiren PowerShell türü biçimlendirme girdileri tarafından tanınmıyor ve biçimlendirilmiyor.
Import-Csv komutunun sonucu, tablo benzeri bir özel nesne oluşturan dize koleksiyonudur. Her satır ayrı bir dize olduğundan, tablo satırlarını saymak için nesnenin Count özelliğini kullanabilirsiniz. Sütunlar nesnenin özellikleridir ve satırlardaki öğeler özellik değerleridir.
Sütun üst bilgisi satırı, sütun sayısını ve sütun adlarını belirler. Sütun adları aynı zamanda nesnelerin özelliklerinin adlarıdır. İlk satır, sütun üst bilgilerini belirtmek için Üst Bilgi parametresini kullanmadığınız sürece sütun üst bilgileri olarak yorumlanır. Herhangi bir satır üst bilgi satırından daha fazla değere sahipse, ek değerler yoksayılır.
Sütun başlığı satırında bir değer eksikse veya null veya boş değer içeriyorsa, Import-CsvH ve ardından eksik sütun üst bilgisi ve özellik adı için bir sayı kullanır.
CSV dosyasında her nesne, nesnenin özellik değerlerinin karakterle ayrılmış bir listesiyle temsil edilir. Özellik değerleri, nesnenin ToString() yöntemi kullanılarak dizelere dönüştürülür, bu nedenle özellik değerinin adıyla temsil edilirler.
Export-Csv nesnesinin yöntemlerini dışarı aktarmaz.
Import-Csv ayrıca W3C Genişletilmiş Günlük biçimini de destekler. Kare işaretiyle (#) başlayan satırlar yorum olarak kabul edilir ve ancak yorum #Fields: ile başlıyor ve sütun adlarının sınırlandırılmış bir listesini içeriyorsa dikkate alınır. Bu durumda, cmdlet bu sütun adlarını kullanır. Bu, Windows IIS ve diğer web sunucusu günlükleri için standart biçimdir. Daha fazla bilgi için bkz. Genişletilmiş Günlük Dosyası Biçimi.