Aracılığıyla paylaş


Import-Csv

Karakterle ayrılmış değer (CSV) dosyasındaki öğelerden tablo benzeri özel nesneler oluşturur.

Syntax

Import-Csv
      [[-Delimiter] <Char>]
      [-Path] <String[]>
      [-Header <String[]>]
      [-Encoding <Encoding>]
      [<CommonParameters>]
Import-Csv
      [[-Delimiter] <Char>]
      -LiteralPath <String[]>
      [-Header <String[]>]
      [-Encoding <Encoding>]
      [<CommonParameters>]
Import-Csv
      [-Path] <String[]>
      -UseCulture
      [-Header <String[]>]
      [-Encoding <Encoding>]
      [<CommonParameters>]
Import-Csv
      -LiteralPath <String[]>
      -UseCulture
      [-Header <String[]>]
      [-Encoding <Encoding>]
      [<CommonParameters>]

Description

Cmdlet, Import-Csv 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 cmdlet'i tarafından Export-Csv 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 cmdlet'in Import-Csv 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ı doğrudan kullanabilirsiniz.

Nesneleri CSV dizelerine (ve geri) dönüştürmek için ve ConvertFrom-Csv cmdlet'lerini de kullanabilirsinizConvertTo-Csv. Bu cmdlet'ler, dosyalarla ilgilenmemeleri dışında ve Import-Csv cmdlet'leriyle aynıdırExport-CSV.

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

cmdlet işlem Get-Process hattının Export-Csvaşağısına işlem nesnelerini gönderir. Cmdlet, Export-Csv işlem nesnelerini CSV dizelerine dönüştürür ve dizeleri Processes.csv dosyasına kaydeder. Cmdlet, Import-Csv csv dizelerini Processes.csv dosyasından içeri aktarır. Dizeler değişkene $P kaydedilir. değişkeni $P , içeri aktarılan CSV dizelerinin özelliklerini görüntüleyen cmdlet'ine işlem hattı Get-Member aşağı gönderilir. değişkeni $P işlem hattına cmdlet'ine Format-Table gönderilir ve nesneleri görüntüler.

Örnek 2: Sınırlayıcıyı belirtme

Bu örnekte, cmdlet'in Sınırlayıcı parametresinin Import-Csv nasıl kullanılacağı gösterilmektedir.

Get-Process | Export-Csv -Path .\Processes.csv -Delimiter :
$P = Import-Csv -Path .\Processes.csv -Delimiter :
$P | Format-Table

cmdlet işlem Get-Process hattının Export-Csvaşağısına işlem nesnelerini gönderir. Cmdlet, Export-Csv işlem nesnelerini CSV dizelerine dönüştürür ve dizeleri Processes.csv dosyasına kaydeder. Sınırlayıcı parametresi, iki nokta üst üste sınırlayıcı belirtmek için kullanılır. Cmdlet, Import-Csv csv dizelerini Processes.csv dosyasından içeri aktarır. Dizeler değişkene $P kaydedilir. To $P değişkeni, işlem hattı cmdlet'ine Format-Table gönderilir.

Örnek 3: Sınırlayıcı için geçerli kültürü belirtin

Bu örnekte, cmdlet'in Import-Csv 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

Cmdlet, Get-Culture geçerli kültürün varsayılan liste ayırıcısını almak için TextInfo ve ListSeparator iç içe özelliklerini kullanır. cmdlet işlem Get-Process hattının Export-Csvaşağısına işlem nesnelerini gönderir. Cmdlet, Export-Csv 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. Cmdlet, Import-Csv 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 header parametresinin Import-Csv 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]

cmdlet'i Start-Job çalıştıran Get-Processbir arka plan işi başlatır. bir iş nesnesi işlem hattına cmdlet'ine Export-Csv gönderilir ve 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. değişkeni şu $Header varsayılan değerlerin yerini alan özel bir üst bilgi içerir: HasMoreData, JobStateInfo, PSBeginTime, PSEndTime ve PSJobTypeName. $A değişkeni, csv dizesini Get-Content Jobs.csv dosyasından almak için cmdlet'ini kullanır. değişkeni $A , dosyadan varsayılan üst bilgiyi kaldırmak için kullanılır. cmdlet'i Out-File , Jobs.csv dosyasının yeni sürümünü değişkenine $A kaydeder. cmdlet'i Import-Csv Jobs.csv dosyasını içeri aktarır ve değişkeni uygulamak için Header parametresini $Header kullanır. $J değişkeni içeri aktarılan PSCustomObject'i 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 çıktıda Get-Content gösterilen değerleri kullanın.

cmdlet'i Get-Content Links.csv dosyasını görüntüler. cmdlet'i Import-Csv Links.csv dosyasını içeri aktarır. Header parametresi LinkId ve TopicTitle özellik adlarını belirtir. Nesneler değişkeninde $A depolanır. cmdlet'iGet-Member, Header parametresindeki özellik adlarını gösterir. cmdlet' Where-Object i diğer ad iç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 Import-Csv üst bilgi satırı null veya boş bir değer içerdiğinde PowerShell'deki cmdlet'in nasıl yanıt verdiği gösterilir. Import-Csv , döndüren nesnenin Import-Csv ö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 were not 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

(Import-Csv -Path .\Projects.csv).H1

WARNING: One or more headers were not specified. Default names starting with "H" have been used in
place of any missing headers.
Redmond
FarEast
Europe

Projects.csv dosyanızı oluşturmak için, örneğin Get-Content çıktısında gösterilen değerleri kullanın.

cmdlet'i Get-Content Projects.csv dosyasını görüntüler. Üst bilgi satırında ProjectName ile Tamamlandı arasında bir değer eksik. Import-Csv Cmdlet, Projects.csv dosyasını içeri aktarır ve H1 varsayılan üst bilgi adı olduğundan bir uyarı iletisi görüntüler. komutu (Import-Csv -Path .\Projects.csv).H1 H1 özellik değerlerini alır ve bir uyarı 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 (,).

İki nokta (:) gibi bir karakter girin. Noktalı virgül (;) belirtmek için tek tırnak 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 CSV dizelerini döndürür.

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters: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: Little-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • 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 Sipariş İş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 (gibi-Encoding 1251) sayısal kimliklerine veya kayıtlı kod sayfalarının dize adlarına da (gibi-Encoding "windows-1251") izin verir. Daha fazla bilgi için Encoding.CodePage için .NET belgelerine bakın.

PowerShell 7.4'den başlayarak Kodlama parametresinin değerini kullanarak Ansi geçerli kültürün ANSI kod sayfasının sayısal kimliğini el ile belirtmek zorunda kalmadan geçirebilirsiniz.

Not

UTF-7* artık kullanılması önerilmez. PowerShell 7.1'den itibaren Kodlama parametresini belirtirseniz utf7 bir uyarı yazılır.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Header

İçeri aktarılan dosya için alternatif bir sütun üst bilgisi satırı belirtir. sütun üst bilgisi tarafından Import-Csvoluş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.

Header parametresini kullanırken, özgün üst bilgi satırını CSV dosyasından silin. Aksi takdirde, Import-Csv üst bilgi satırındaki öğelerden ek bir nesne oluşturur.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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, tek tırnak içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamaması gerektiğini söyler.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

İçeri aktaracak CSV dosyasının yolunu belirtir. Ayrıca yolunu adresine Import-Csvde yöneltebilirsiniz.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Girişler

String

Bu cmdlet'in yolunu içeren bir dizeyi kanala aktarabilirsiniz.

Çıkışlar

Object

Bu cmdlet, CSV dosyasındaki içerik tarafından açıklanan nesneleri döndürür.

Notlar

PowerShell için aşağıdaki diğer adları Import-Csviç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.

Komutun Import-Csv 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. Sütun başlıklarını belirtmek için Header parametresini kullanmadığınız sürece, ilk satır 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ş bir değer içeriyorsa, Import-Csv eksik sütun üst bilgisi ve özellik adı için H ve ardından 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. ile # başlayan satırlar açıklama olarak kabul edilir ve açıklama ile #Fields: başlayıp sütun adlarının sınırlandırılmış listesini içermediği sürece yoksayılı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.