Windows Powershell – Bölüm 5 – Importing Data

By | 12 December 2016

Bu bölümde windows powershell mimarisinde verilerin import edilmesini anlatacağım.

Bir önceki makale için aşağıdaki linki kullanabilirsiniz.

Bölüm 4 – Converting Objects

Import işlemi powershell dışındaki bir birimden (storage uzerindeki bir data yada 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 komplex bir data yapısına sahiptir ve datayı saklamakta daha etkin bir metod 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üstürmekteydi)

Örnek üzerinde bu durum inceleyelim.

Aşağıdaki komutu çalıştırıp ilk 10 servisi csv olarak ekport edelim.

Get-Service | select -First 10 | Export-Csv c:\users\firat\desktop\Servisler.csv

image001

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.

image002

Ş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

image003

 

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

image004

 

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

image005

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. Fakat Import-csv komutu diğer komutlardan daha hızlı sonuç verir.

Bir sonraki makalede görüşmek üzere.

Kaynak: Microsoft DMOC

Fırat

 

Leave a Reply