ConvertTo-Csv

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

Syntax

Delimiter (Varsayılan)

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

UseCulture

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

Description

ConvertTo-Csv cmdlet'i, gönderdiğiniz nesneleri temsil eden bir dizi karakterle ayrılmış değer (CSV) dizesi döndürür. Ardından 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 özgün 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-Csvile benzerdir.

ConvertTo-Csv cmdlet'inin, virgül dışında bir ayırıcı belirtmek veya geçerli kültürü ayırıcı olarak kullanmak için parametreleri vardır.

Örnekler

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

Bu örnek, İşlem 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 İşlem nesnesini alır ve PowerShell işlemini belirtmek için Name parametresini kullanır. İşlem hattı içinden gelen işlem nesnesi, ConvertTo-Csv cmdlet'ine gönderilir. ConvertTo-Csv cmdlet'i 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, 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ıp $Date değişkenine kaydeder. ConvertTo-Csv cmdlet'i DateTime nesnesini dizelere dönüştürür. InputObject parametresi, değişkeninde depolanan $Date 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", ...

Get-Culture cmdlet'i, iç içe geçmiş TextInfo ve ListSeparator özelliklerini kullanır ve geçerli kültürün varsayılan 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ına 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, 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, 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şaretiyle CSV'ye dönüştürme

Bu örnek, 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: Hashtabloları CSV'ye dönüştürme

PowerShell 7.2 ve üzerinde karma tablolarınızı CSV'ye dönüştürdüğünüzde, ilk karma tablo anahtarları serileştirilir ve çıktıda üst bilgi 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: Ek özelliklerle karma tabloları CSV'ye dönüştürme

PowerShell 7.2 ve üzeri sürümlerde, Add-Member veya Select-Object ile eklenen ek özelliklere sahip bir karma tabloyu dönüştürdüğünüzde, bu ek özellikler de CSV çıktısında başlık olarak eklenir.

$allPeople | Add-Member -Name ExtraProp -Value 42
$allPeople | ConvertTo-Csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"

Her karma tablo, ExtraProp tarafından eklenen ve csv'ye dönüştürülen Add-Member adlı bir özelliğe sahiptir. ExtraProp'ın artık çıktıda bir başlık olduğunu görebilirsiniz.

Eklenen bir özellik, karma tablodaki anahtarla aynı adına sahipse, anahtar önceliklidir 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 değer virgüldür (,).

Bir karakter girin, örneğin iki nokta üst üste (:). Noktalı virgül (); belirtmek için, bunu tek tırnak içine alın. Sekme ()`t gibi kaçış özel karakterlerini belirtmek için, çift tırnak içine alın.

Parametre özellikleri

Tür:Char
Default value:comma (,)
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

Delimiter
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

-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, #TYPE System.Diagnostics.Process.

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

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:ITI

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

-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 ConvertTo-Csv'e de yöneltebilirsiniz.

Parametre özellikleri

Tür:PSObject
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
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

-NoHeader

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

Bu parametre PowerShell 7.4'e eklendi.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
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

-NoTypeInformation

Çıktıdan #TYPE bilgi üst bilgisini kaldırır. Bu parametre PowerShell 6.0'da varsayılan değer oldu ve geriye dönük uyumluluk için eklenmiştir.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:NTI

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

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

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:QF

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

-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:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

UseCulture
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

-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 alıntıla (varsayılan davranış)
  • AsNeeded - yalnızca sınırlayıcı karakter, çift tırnak veya yeni satır karakteri içeren tırnak alanları

Bu parametre PowerShell 7.0'a eklendi.

Parametre özellikleri

Tür:Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind
Default value:Always
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:UQ

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

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

PSObject

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

Çıkışlar

String

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

Notlar

CSV biçiminde 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ışarı aktarmaz.

CSV dizeleri aşağıdaki gibi olarak çıkartılır.

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

PowerShell 6.0 ile başlayarak, varsayılan davranış CSV'ye #TYPE bilgilerini eklememek ve NoTypeInformation içermektedir. IncludeTypeInformation, #TYPE bilgilerini eklemek ve PowerShell 6.0 öncesi ConvertTo-Csv varsayılan davranışına öykünmek için kullanılabilir.

ConvertTo-Csviçin birden ç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 başka özellikleri varsa, bu özellik değerleri yoksayılır.