Microsoft PowerShell – Importing Data – Bölüm 5. Import işlemi PowerShell dışındaki bir birimden (storage üzerindeki bir data ya da disk üzerindeki bir dosya vb..) belli formattaki datayı okuyup tekrar obje olarak Convert etmeyi sağlayan bir işlemdir. Burada dikkat edilmesi gereken önemli nokta belli formattaki dataların obje olarak Import edilecek olmasıdır.
Bahsi geçen objeler genellikle Pipeline içerisine konulup diğer komuta aktarılırlar.
Import işleminin efektif olması verinin formatı ile doğrudan alakalıdır. Örneğin CSV düz bir data yapısına sahiptir. Önce Property’ler ve bunlara ait değerler vardır. Bu sebeple kompleks bir data yapısı sunmaz. Buna karşın XML hiyerarşik kompleks bir data yapısına sahiptir ve datayı saklamakta daha etkin bir metot sunar.
PowerShell üzerinde Import kelimesi kullanıldığında basit olarak iki işlem yapılır.
1. Data PowerShell dışındaki birimden okunur.
2. Okunan data obje formatına dönüştürülür.
Aslında bu işlem Export komutu ile yapılan işlemin tam tersidir. (Hatırlarsanız Export işlemi datayı Export ederken aynı zamanda formatını da dönüştürmekteydi)
Örnek üzerinde bu durum inceleyelim.
Aşağıdaki komutu çalıştırıp ilk 10 servisi csv olarak export edelim.
Get-Service | select -First 10 | Export-Csv c:\users\firat\desktop\Servisler.csv
Resim-1
CSV dosyası açıldığında ilk satırda Convert edilen Type, ikinci satırda Property isimleri listelenir. Diğer satırlar ise Convert edilen objelere ait bilgileri barındırırlar.
Resim-2
Şimdi işlemi tam tersine çevirip elde ettiğimiz csv file üzerinden veriyi tekrar Import edelim.
Import ettiğimiz data tekrar objeye dönüşeceği için, üzerinde sort, select ve benzeri komutları çalıştırmayı deneyelim.
Aşağıdaki gibi csv Import işleminin ardından objeleri once sıralayalım, sonra da belirli Property’lerine göre ilk beşini listeleyelim.
Import-Csv c:\users\firat\desktop\Servisler.csv | Sort-Object -Descending | select -Property name,displayname,status -First 5
Resim-3
Görüldüğü gibi Import işleminin ardından veriler objeye dönüştürüldüğü için üzerlerinde sort,select ve benzeri komutlar sorunsuz şekilde çalıştırılabilirler.
Örneğin Import komutu yerine Get-Content komutu kullanılmış olsaydı bu komutların hiç birisi çalışmazdı.
Çünkü Get-Content komutu ile csv içerisindeki veri sanki notepad üzerinden raw data okunur gibi okunmuş olacaktı.
Örnek olarak PowerShell üzerinde komutumuzu aşağıdaki gibi çalıştıralım.
Get-Content c:\users\firat\desktop\Servisler.csv | Sort-Object -Descending | select -Property name,displayname,status -First 5
Resim-4
Görüldüğü üzere komut bu şekilde çalıştırıldığında hiçbir değer döndürmez. Bunun sebebi Data’nın raw içerik olarak alınmasıdır. Bunun yerine komut aşağıdaki şekilde revize edilirse istenilen sonuç alınır.
Get-Content c:\users\firat\desktop\Servisler.csv | ConvertFrom-Csv |Sort-Object -Descending | select -Property name,displayname,status -First 5
Resim-5
Bu komutta diğer komuttan farklı olarak ConvertFrom-CSV cmdlet’i kullanıldı. Bu cmdlet ile raw olarak alınan içerik Pipeline’a kullanılabilir obje olarak iletildi ve istenilen sonuç elde edildi.
Özetle Import-Csv , Get-Content ve ConvertFrom-Csv komutlarının birlikte yaptığı işi tek başına yapar. J Fakat Import-csv komutu diğer komutlardan daha hızlı sonuç verir.
Bir sonraki makalede görüşmek üzere.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
Microsoft DMOC
TAGs : PowerShell, PowerShell ornek, PowerShell Import data, PowerShell data Import, PowerShell data çekmek, PowerShell data almak