ConvertTo-Csv (Microsoft.PowerShell.Utility)


ConvertTo-Csv

Modül:
Microsoft.PowerShell.Utility

.NET nesnelerini bir dizi karakterle ayrılmış değer (CSV) dizesine dönüştürür.

Sözdizimi

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>]

Tanım

ConvertTo-CSV cmdlet'i, gönderdiğiniz nesneleri temsil eden bir dizi karakterle ayrılmış değer (CSV) dizesi döndürür. Daha sonra CSV dizelerinden nesneleri yeniden oluşturmak için ConvertFrom-Csv cmdlet'ini kullanabilirsiniz. CSV'den dönüştürülen nesneler, özellik değerleri içeren ve yöntem içermeyen orijinal nesnelerin dize değerleridir.

Nesneleri CSV dizelerine dönüştürmek için Export-Csv cmdlet'ini kullanabilirsiniz. Export-CSV, CSV dizelerini bir dosyaya kaydetmesi dışında ConvertTo-CSV'ye benzer.

ConvertTo-CSV cmdlet'i, virgül dışında bir sınırlayıcı belirtmek veya sınırlayıcı olarak geçerli kültürü kullanmak için parametrelere sahiptir.

Örnekler

Örnek 1: Bir nesneyi CSV'ye dönüştürme

Bu örnek, bir Process nesnesini CSV dizesine dönüştürür.

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", ...

Get-Process cmdlet'i Process nesnesini alır ve PowerShell işlemini belirtmek için Ad parametresini kullanır. İşlem nesnesi ardışık düzen üzerinden ConvertTo-CSV cmdlet'ine gönderilir. ConvertTo-CSV cmdlet'i nesneyi CSV dizelerine dönüştürür. NoTypeInformation parametresi #TYPE bilgi üstbilgisini CSV çıkışından kaldırır ve PowerShell 6'da gerekli değildir.

Örnek 2: DateTime nesnesini CSV'ye dönüştürme

Bu örnek, bir DateTime nesnesini CSV dizesine dönüştürür.

$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"

Get-Date cmdlet'i DateTime nesnesini alır ve onu $Date değişkenine kaydeder. ConvertTo-Csv cmdlet'i DateTime nesnesini dizelere dönüştürür. InputObject parametresi, $Date değişkeninde depolanan DateTime nesnesini kullanır. Sınırlayıcı parametresi, dize değerlerini ayırmak için noktalı virgül belirtir. NoTypeInformation parametresi #TYPE bilgi üstbilgisini CSV çıkışından kaldırır ve PowerShell 6'da gerekli değildir.

Örnek 3: PowerShell olay günlüğünü CSV'ye dönüştürme

Bu örnek, PowerShell için Windows olay günlüğünü bir dizi CSV dizesine dönüştürür.

(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", ...

Get-Culture cmdlet'i iç içe geçmiş TextInfo ve ListSeparator özelliklerini kullanır ve geçerli kültürün varsayılan liste ayırıcısını görüntüler. Get-WinEvent cmdlet'i olay günlüğü nesnelerini alır ve günlük dosyası adını belirtmek için LogName parametresini kullanır. Olay günlüğü nesneleri işlem hattı boyunca ConvertTo-Csv cmdlet'ine gönderilir. ConvertTo-Csv cmdlet'i olay günlüğü nesnelerini bir dizi CSV dizesine dönüştürür. UseCulture parametresi, sınırlayıcı olarak geçerli kültürün varsayılan liste ayırıcısını kullanır. NoTypeInformation parametresi #TYPE bilgi üstbilgisini CSV çıkışından kaldırır ve PowerShell 6'da gerekli değildir.

Örnek 4: İki sütun etrafında tırnak işaretleri bulunan CSV'ye dönüştürme

Bu örnek, bir DateTime nesnesini CSV dizesine dönüştürür.

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

Örnek 5: Gerektiğinde yalnızca tırnak işaretleri içeren CSV'ye dönüştürme

Bu örnek, bir DateTime nesnesini CSV dizesine dönüştürür.

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

Örnek 6: Hashtable'ları CSV'ye dönüştürme

PowerShell 7,2 ve üzeri sürümlerde, karma tabloları CSV'ye dönüştürdüğünüzde, ilk karma tablonun anahtarları serileştirilir ve çıktıda başlık olarak kullanılır.

$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"

Örnek 7: Hashtable'ları ek özelliklerle CSV'ye dönüştürme

PowerShell 7.2 ve üzeri sürümlerde, Add-Member veya Select-Object ile eklenmiş ek özelliklere sahip bir hash tablosunu dönüştürdüğünüzde, ek özellikler CSV'ye başlık olarak da eklenir. çıktı.

$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv

"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"

Her karma tablosunun Add-Member tarafından eklenen ve ardından CSV'ye dönüştürülen ExtraProp adında bir özelliği vardır. ExtraProp'un artık çıktıda bir başlık olduğunu görebilirsiniz.

Eklenen bir özellik, karma tablosundaki anahtarla aynı ada sahipse anahtar öncelikli olur ve yalnızca anahtar CSV'ye dönüştürülür.

Parametreler

-Delimiter

CSV dizelerindeki özellik değerlerini ayırmak için sınırlayıcıyı belirtir. Varsayılan virgüldür (,). İki nokta üst üste (:) gibi bir karakter girin. Noktalı virgül (;) belirtmek için onu tek tırnak içine alın.

Tip :

Karakter

Konum:

1

Varsayılan değer:

virgül (,)

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-IncludeTypeInformation

Bu parametre kullanıldığında çıktının ilk satırında #TYPE ve ardından nesne türünün tam nitelikli adı bulunur. Örneğin, #TYPE Sistem.Diagnostics.Process.

Bu parametre PowerShell 6,0'da tanıtıldı.

Tip :

SwitchParameter

Takma adlar:

ITI

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-InputObject

CSV dizelerine dönüştürülen nesneleri belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın. Ayrıca nesneleri ConvertTo-CSV'ye aktarabilirsiniz.

Tip :

PSObject

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-NoHeader

Bu parametre kullanıldığında cmdlet, sütun adlarını içeren bir başlık satırını çıktıya yazmaz.

Bu parametre PowerShell 7.4'e eklenmiştir.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-NoTypeInformation

#TYPE bilgi başlığını çıktıdan kaldırır. Bu parametre PowerShell 6,0'da varsayılan haline geldi ve geriye dönük uyumluluk için dahil edildi.

Tip :

SwitchParameter

Takma adlar:

NTI

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-QuoteFields

Alıntı yapılması gereken sütunların adlarını belirtir. Bu parametre kullanıldığında yalnızca belirtilen sütunlar tırnak içine alınır. Bu parametre PowerShell 7,0'a eklenmiştir.

Tip :

String[]

Takma adlar:

QF

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-UseCulture

Öğe sınırlayıcı olarak geçerli kültürün 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.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-UseQuotes

CSV dosyalarında tırnak işaretlerinin ne zaman kullanılacağını belirtir. Olası değerler şunlardır:

  • Asla - hiçbir şeyden alıntı yapmayın
  • Her zaman - her şeyi alıntıla (varsayılan davranış)
  • AsNeeded - yalnızca sınırlayıcı karakter, çift tırnak işareti veya yeni satır karakteri içeren alıntı alanları

Bu parametre PowerShell 7,0'a eklenmiştir.

Tip :

Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind

Takma adlar:

UQ

Konum:

Adlandırılmış

Varsayılan değer:

Her zaman

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

Girişler

PSObject

Genişletilmiş Tür Sistemi (ETS) bağdaştırıcısına sahip herhangi bir nesneyi bu cmdlet'e aktarabilirsiniz.

Çıkışlar

Dize

Bu cmdlet, dönüştürülen her nesneyi temsil eden bir veya daha fazla dize döndürür.

Notlar

CSV formatında her nesne, özellik değerinin karakterle ayrılmış bir listesiyle temsil edilir. Özellik değerleri, nesnenin ToString() yöntemi kullanılarak dizelere dönüştürülür. Dizeler özellik değeri adıyla temsil edilir. ConvertTo-CSV nesnenin yöntemlerini dışa aktarmaz.

CSV dizelerinin çıktısı şu şekildedir:

  • IncludeTypeInformation kullanılırsa, ilk dize #TYPE ve ardından nesne türünün tam nitelikli adından oluşur. Örneğin, #TYPE Sistem.Diagnostics.Process.
  • IncludeTypeInformation kullanılmazsa ilk dize sütun başlıklarını içerir. Başlıklar, ilk nesnenin özellik adlarını karakterle ayrılmış bir liste olarak içerir.
  • Geri kalan dizeler, her nesnenin özellik değerlerinin karakterle ayrılmış listelerini içerir.

PowerShell 6.0'dan itibaren ConvertTo-CSV'nin varsayılan davranışı, CSV'ye #TYPE bilgisini dahil etmemektir ve NoTypeInformation ima edilir. IncludeTypeInformation, #TYPE bilgilerini eklemek ve PowerShell 6.0'dan önceki ConvertTo-CSV'nin varsayılan davranışını taklit etmek için kullanılabilir.

ConvertTo-CSV'ye birden fazla nesne gönderdiğinizde, ConvertTo-CSV, gönderdiğiniz ilk nesnenin özelliklerine göre dizeleri sıralar. Geriye kalan nesneler belirtilen özelliklerden birine sahip değilse, bu nesnenin özellik değeri, ardışık iki virgülle temsil edilen Null olur. Kalan nesnelerin ek özellikleri varsa bu özellik değerleri yoksayılır.

İlgili makaleler