Aracılığıyla paylaş


ConvertTo-Csv

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

Syntax

ConvertTo-Csv
              [-InputObject] <PSObject>
              [[-Delimiter] <Char>]
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [-QuoteFields <String[]>]
              [-UseQuotes <QuoteKind>]
              [<CommonParameters>]
ConvertTo-Csv
              [-InputObject] <PSObject>
              [-UseCulture]
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [-QuoteFields <String[]>]
              [-UseQuotes <QuoteKind>]
              [<CommonParameters>]

Description

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

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

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

Örnekler

Örnek 1: 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", ...

Cmdlet processGet-Process nesnesini alır ve Name parametresini kullanarak PowerShell işlemini belirtir. İşlem nesnesi işlem hattı cmdlet'ine ConvertTo-CSV gönderilir. cmdlet'i ConvertTo-CSV nesneyi CSV dizelerine dönüştürür. NoTypeInformation parametresi, CSV çıkışından #TYPE bilgi üst bilgisini 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"

cmdlet'i Get-DateDateTime nesnesini alır ve değişkenine $Date kaydeder. cmdlet'i ConvertTo-CsvDateTime nesnesini dizelere dönüştürür. InputObject parametresi değişkeninde $Date depolanan DateTime nesnesini kullanır. Sınırlayıcı parametresi, dize değerlerini ayırmak için noktalı virgül belirtir. NoTypeInformation parametresi, CSV çıkışından #TYPE bilgi üst bilgisini 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", ...

Cmdlet, Get-CultureTextInfo ve ListSeparator iç içe özelliklerini kullanır ve geçerli kültürün varsayılan liste ayırıcısını görüntüler. Cmdlet olay Get-WinEvent 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ı cmdlet'ine ConvertTo-Csv gönderilir. cmdlet'i ConvertTo-Csv 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, CSV çıkışından #TYPE bilgi üst bilgisini kaldırır ve PowerShell 6'da gerekli değildir.

Örnek 4: İki sütun çevresinde tırnak işaretleri olan 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: Yalnızca gerektiğinde tırnak işaretleri ile 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

Parametreler

-Delimiter

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

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTypeInformation

Bu parametre kullanıldığında çıkışın ilk satırı #TYPE ve ardından nesne türünün tam adını içerir. Örneğin, System.Diagnostics.Process #TYPE.

Bu parametre PowerShell 6.0'da kullanıma sunulmuştur.

Type:SwitchParameter
Aliases:ITI
Position:Named
Default value:#TYPE <Object>
Required:False
Accept pipeline input:False
Accept wildcard characters: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. Nesneleri öğesine ConvertTo-CSVde yöneltebilirsiniz.

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoTypeInformation

Çıktıdan #TYPE bilgi üst bilgisini kaldırır. Bu parametre PowerShell 6.0'da varsayılan hale geldi ve geriye dönük uyumluluk için dahil edilir.

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

-QuoteFields

Tırnak içine alınması 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 eklendi.

Type:String[]
Aliases:QF
Position:Named
Default value:None
Required:False
Accept pipeline input:False
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:False
Accept pipeline input:False
Accept wildcard characters:False

-UseQuotes

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

  • Hiçbir zaman - hiçbir şeyden alıntı yapmayın
  • Her zaman - her şeyi tırnak içine alma (varsayılan davranış)
  • AsNeeded - yalnızca sınırlayıcı karakteri içeren tırnak alanları

Bu parametre PowerShell 7.0'a eklendi.

Type:Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind
Aliases:UQ
Position:Named
Default value:Always
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

PSObject

Genişletilmiş Tür Sistemi (ETS) bağdaştırıcısı olan herhangi bir nesneyi öğesine aktarabilirsiniz ConvertTo-CSV.

Çıkışlar

String

CSV çıkışı dize koleksiyonu olarak döndürülür.

Notlar

CSV biçiminde her nesne, özellik değerinin virgülle 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ışarı aktarmaz.

CSV dizeleri aşağıdaki gibi çıkıştır:

  • IncludeTypeInformation kullanılırsa, ilk dize #TYPE ve ardından nesne türünün tam adını içerir. Örneğin, System.Diagnostics.Process #TYPE.
  • IncludeTypeInformation kullanılmazsa, ilk dize sütun başlıklarını içerir. Üst bilgiler, ilk nesnenin özellik adlarını virgülle ayrılmış liste olarak içerir.
  • Kalan dizeler, her nesnenin özellik değerlerinin virgülle ayrılmış listelerini içerir.

PowerShell 6.0'ın varsayılan davranışı ConvertTo-CSV , CSV'ye #TYPE bilgilerini eklememektir ve NoTypeInformation örtülüdür. IncludeTypeInformation, #TYPE bilgilerini eklemek ve PowerShell 6.0 öncesi varsayılan davranışını öykünmek ConvertTo-CSV için kullanılabilir.

öğesine ConvertTo-CSVbirden çok nesne gönderdiğinizde, ConvertTo-CSV dizeleri gönderdiğiniz ilk nesnenin özelliklerine göre sıralar. Kalan nesneler belirtilen özelliklerden birine sahip değilse, ardışık iki virgülle gösterildiği gibi bu nesnenin özellik değeri Null olur. Kalan nesnelerin ek özellikleri varsa, bu özellik değerleri yoksayılır.