CSV sınırlayıcı PowerShell'i içe aktar


PowerShell'de neden CSV içe aktarma (virgülle ayrılmış değerler) sınırlayıcısını kullanmamız gerekiyor? Varsayılan olarak PowerShell sınırlayıcı olarak virgül kullanır. CSV dosyasında virgülden farklı bir sınırlayıcı mı kullanıyorsunuz? Cevabınız evet ise PowerShell'deki sınırlayıcı parametresini kullanmanız gerekir. Bu makalede PowerShell'de Import-Csv sınırlayıcısıyla nasıl çalışılacağını öğreneceksiniz.

Bilgi

CSV dosyası PowerShell ile mükemmel bir kombinasyondur. Import-Csv cmdlet'i, CSV dosyalarındaki öğelerden tablo benzeri özel nesneler oluşturur. CSV dosyasındaki her sütun, özel nesnenin bir özelliği haline gelir ve satırlardaki öğeler özellik değerleri haline gelir. Import-Csv, Export-Csv cmdlet'i tarafından oluşturulan dosyalar da dahil olmak üzere herhangi bir CSV dosyasında çalışır.

PowerShell ile CSV'den Active Directory Kullanıcıları Oluşturmak için bir PowerShell betiği çalıştırmayı seviyoruz. Komut dosyasını çalıştırdıktan sonra bir hata görünüyor.

PS C:\Scripts> .\Add-NewUsers.ps1
Get-ADUser : Variable: 'Username' found in expression: $Username is not defined.
At C:\scripts\Add-NewUsers.ps1:31 char:6
+     if (Get-ADUser -F {SamAccountName -eq $Username})
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentException

Neden oluyor?

Bazı Avrupa elektronik tablo programları, CSV dosyalarındaki veri alanlarını ayırmak (sınırlamak) için virgül yerine noktalı virgül kullanır. CSV içe aktarma işlemlerinde sorunlara neden olabilir.

Karakterleri ayırma:

  • Noktalı virgül: ;

  • Virgül: ,

PowerShell'de Import-Csv cmdlet'ini kontrol edin

NewUsersFinal.csv dosyasını indirin ve C:\Temp\ klasörüne yerleştirin. Import-Csv cmdlet'ini kullanın. PowerShell'de sütunları görmüyorsanız CSV dosyasını düzgün okuyamıyor demektir.

PS C:\> Import-Csv "C:\Temp\NewUsersFinal.csv" | Format-Table

FirstName;Initials;Lastname;Username;Email;StreetAddress;City;ZipCode;State;Country;Department;Password;Telephone;JobTitle;Company;OU                
-------------------------------------------------------------------------------------------------------------------------------------                
Max;MF;Fraser;Max.Fraser;Max.Fraser@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;Q+/7_]Tc;44123456780;Engineer;EXOIP;OU=IT                
Piers;PB;Bower;Piers.Bower;Piers.Bower@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;RW-cn3N);44123456781;Manager;EXOIP;OU=IT              
Kylie;KD;Davidson;Kylie.Davidson;Kylie.Davidson@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;3VKr2.Wm;44123456782;Engineer;EXOIP;OU=IT    
Richard;RG;Grant;Richard.Grant;Richard.Grant@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;)N3ZYJvS;44123456783;Teamleader;EXOIP;OU=IT     
Boris;BC;Campbell;Boris.Campbell;Boris.Campbell@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;9ZesQ]pq;44123456784;Engineer;EXOIP;OU=IT    
Nicholas;NM;Murray;Nicholas.Murray;Nicholas.Murray@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;KX*rB72p;44123456785;Manager;EXOIP;OU=IT  
Leonard;LC;Clark;Leonard.Clark;Leonard.Clark@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;AJ+(}c3$;44123456786;Engineer;EXOIP;OU=IT       
Ruth;RD;Dickens;Ruth.Dickens;Ruth.Dickens@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;Jgv4{Bb$;44123456787;Engineer;EXOIP;OU=IT          
Jonathan;JF;Fisher;Jonathan.Fisher;Johnathan.Fisher@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;u*PQJAx5;44123456788;Engineer;EXOIP;OU=IT
Grace;GR;Rees;Grace.Rees;Grace.Rees@exoip.com;21 Baker St;London;NW1 6XE;;United Kingdom;IT;w([6p&Kt;44123456789;Engineer;EXOIP;OU=IT

Çıktıda tüm bilgileri göremiyorsanız Out-GridView cmdlet'ini kullanın.

PS C:\> Import-Csv "C:\Temp\NewUsersFinal.csv" | Out-GridView

Aşağıdaki ekrandaki gibi görünecektir.

-Delimiter “;” sınırlayıcı parametresini Import-Csv cmdlet'ine ekleyin.

PS C:\> Import-Csv "C:\Temp\NewUsersFinal.csv" -Delimiter ";" | Format-Table

FirstName Initials Lastname Username        Email                      StreetAddress City   ZipCode State Country       
--------- -------- -------- --------        -----                      ------------- ----   ------- ----- -------       
Max       MF       Fraser   Max.Fraser      Max.Fraser@exoip.com       21 Baker St   London NW1 6XE       United Kingdom
Piers     PB       Bower    Piers.Bower     Piers.Bower@exoip.com      21 Baker St   London NW1 6XE       United Kingdom
Kylie     KD       Davidson Kylie.Davidson  Kylie.Davidson@exoip.com   21 Baker St   London NW1 6XE       United Kingdom
Richard   RG       Grant    Richard.Grant   Richard.Grant@exoip.com    21 Baker St   London NW1 6XE       United Kingdom
Boris     BC       Campbell Boris.Campbell  Boris.Campbell@exoip.com   21 Baker St   London NW1 6XE       United Kingdom
Nicholas  NM       Murray   Nicholas.Murray Nicholas.Murray@exoip.com  21 Baker St   London NW1 6XE       United Kingdom
Leonard   LC       Clark    Leonard.Clark   Leonard.Clark@exoip.com    21 Baker St   London NW1 6XE       United Kingdom
Ruth      RD       Dickens  Ruth.Dickens    Ruth.Dickens@exoip.com     21 Baker St   London NW1 6XE       United Kingdom
Jonathan  JF       Fisher   Jonathan.Fisher Johnathan.Fisher@exoip.com 21 Baker St   London NW1 6XE       United Kingdom
Grace     GR       Rees     Grace.Rees      Grace.Rees@exoip.com       21 Baker St   London NW1 6XE       United Kingdom

Yine bu sefer Out-GridView cmdlet'iyle.

Import-Csv cmdlet'ine sınırlayıcı parametresi ekleyin

Önceki adımda görüldüğü gibi CSV dosyası noktalı virgül karakterini aldı. -Delimiter “;” sınırlayıcı parametresini Import-Csv cmdlet'ine eklemeliyiz.

Önce

$ADUsers = Import-csv "C:\scripts\NewUsersFinal.csv"

Sonra

$ADUsers = Import-csv "C:\scripts\NewUsersFinal.csv" -Delimiter ";"

Komut dosyasını çalıştırın, beklendiği gibi çalışacaktır. Bu sana yardımcı oldu mu?

Okumaya devam edin: Posta kutularının listesini Exchange'de CSV'ye aktarın »

Çözüm

Bu makalede, CSV sınırlayıcısını PowerShell ile nasıl içe aktaracağınızı öğrendiniz. CSV dosyanızı kontrol edin ve Import-Csv cmdlet'inizi sınırlayıcı parametresiyle ayarlayın. Betiği çalıştırmadan önce CSV'yi PowerShell'e aktarmak her zaman iyidir. Bu şekilde CSV dosyasının okunabilir olup olmadığını bilirsiniz!

Bu makaleyi beğendiniz mi? Öyleyse New-MailboxExportRequest Exchange Server'da tanınmıyor makalesini beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.

İlgili makaleler