ConvertTo-Csv
.NET nesnelerini karakterle ayrılmış değer (CSV) dizeleri dizisine 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>]
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-Csv
ile benzerdir.
ConvertTo-Csv
cmdlet'i, virgül dışında bir sınırlayıcı belirtmek veya geçerli kültürü sınırlayıcı olarak kullanmak için parametrelere sahiptir.
Ö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 nesnesi işlem hattı 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ır ve $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 TextInfo ve ListSeparator iç içe özellikleri 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ı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: Karma tablolarını 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ını CSV'ye dönüştürme
PowerShell 7.2 ve üzeri sürümlerin Add-Member
veya Select-Object
ek özellikleri olan bir karma tablo dönüştürdüğünüzde, ek özellikler de CSV çıkışına üst bilgi 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
artık çıktıda bir üst bilgi 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 (,
). İki nokta üst üste (:
) gibi bir karakter girin. Noktalı virgül (;
) belirtmek için tek tırnak içine alın.
Tür: | Char |
Position: | 1 |
Default value: | comma (,) |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Diğer adlar: | ITI |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | 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. Nesneleri ConvertTo-Csv
'e de yöneltebilirsiniz.
Tür: | PSObject |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | SwitchParameter |
Diğer adlar: | NTI |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | String[] |
Diğer adlar: | QF |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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
.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | 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.
Tür: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
Diğer adlar: | UQ |
Position: | Named |
Default value: | Always |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
Genişletilmiş Tür Sistemi (ETS) bağdaştırıcısı olan herhangi bir nesneyi bu cmdlet'e aktarabilirsiniz.
Çıkışlar
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 çı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ı 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, ConvertTo-Csv
varsayılan davranışı CSV'ye #TYPE bilgilerini eklememektir ve noTypeInformation .
IncludeTypeInformation, #TYPE bilgilerini eklemek ve PowerShell 6.0 öncesi ConvertTo-Csv
varsayılan davranışına öykünmek için kullanılabilir.
ConvertTo-Csv
iç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 ek özellikleri varsa, bu özellik değerleri yoksayılır.