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.