PowerShell TEMEL DERSLER 11 (PowerShell MODULES)

Merhaba Arkadaşlar kısa bir aradan sonra yeni bir makale ile  yine  birlikteyiz. Bu makalemizde powershell modül kavramından bahsedeceğim.  Makaleme başlamadan önce google arama motoruna girip “powershell module nedir” diye Türkçe sitelerde bir arama yaptım. Sonuçlar gerçekten de çok ilginçti 🙂  inanır mısınız “powershell module nedir” ile ilgili tek bir tane Türkçe sonuç çıkmadı. Buda şu demektir bu alanda Türkçe kaynaklar gerçekten de yok denecek kadar az o yüzden daha çok yazmamız gerekiyor diye düşünüyorum.

Terminolojik kavramları öğrenirken en nefret ettiğim şey terimin bilimsel ifadesinin ezberlenmesidir.  Her zaman “Nasıl öğrenirsen öğren anlayarak öğren”  felsefesini benimsemişimdir. O yüzden makalelerimde hep öğretme ve akıllarda kalıcı olacak şekilde ifadeler kullanmışımdır yada kullanmaya özen göstermişimdir.

Microsoft un Technet makalelerine bakıp powershell modül nedir’i Türkçeye çevirdiğinizde ingilizceniz ne kadar iyi olursa olsun ortaya hep tarzanca bir ifade çıkar.

Biz gelin sizinle birlikte Powershell modül nedir?  yeniden tanımlayalım.

Powershell modül demek komutların gruplar halinde kümelenmiş olması demektir. Olayı yine basite indirgeyeceğim. Bilgisayarınızda kullanabileceğimiz komutların toplam sayısı 500 olsun bu komutlardan 250 tanesinin dosya ve klasörlerle işlem yapan komutlar olduğunu düşünün örneğin, silme, kopyalama,taşıma vb.. yine atıyorum 150 tanesinin network kartınızın bilgilerini görme, değiştirme, ip adresi verme,dns değiştirme gibi komutlar olduğunu düşünün. 100 tanesinin de internet ile ilgili konuları içeren komutlar olduğunu düşünün. İşte gruplanmış komutlar topluluğu demek bir modül demektir. Yani 250 tane olan dosya ve klasörlerle ilgili olan bir modül , 150 tane olan başka bir modül şeklinde. Doğal olaraktan da her modül ün bir ismi vardır.  Hepsi bu uzatmaya gerek var mı ? 🙂

Umarım modül kavramı kafanızda oturmuştur. Şimdi ikinci kavramımızdan bahsedeceğiz powershell imize modül eklemek. Yine aynı mantıkla hareket edersek modül eklemek demek ilgili modülü yani komut setini powershell oturumumuza eklemek demektir. Örneğin internette bir komut gördünüz Get-ADUser komutu, bu komutun Active directory de kullanıcılar ile ilgili bir işlem yaptığını öğrendiniz. Hemen kullandınız ve aşağıdaki hatayı aldınız. Ashampoo_Snap_11 Nisan 2018 Çarşamba_11h12m04s_003_

Bu gayet normal bir hatadır. Evet powershell de böyle bir komut var ama bu komutu barındıran modüle yani komut seti bilgisayarınızda yok yada powershell oturumunuza eklenmemiş. Burdan çıkan sonuç şu, bir modulü kullanmadan önce bilgisayarımıza indireceğiz. Sonrasında da powershell imiz de, konsolumuz da kullanmak için onu powershell oturumumuza ekleyeceğiz. Birazdan bu işlemleri nasıl yapacağımızı açıklayacağız.

Powershell konsolunu açıp   Get-Command yazıp enter a bastığınızda yüzlerce komut içeren bir liste gelecektir.

Ashampoo_Snap_11 Nisan 2018 Çarşamba_11h16m00s_004_

Benim bilgisayarımda tam 1690 tane kullanabileceğim komut çıktı. Sizde bu sayı muhtemelen farklı olacaktır. Neden farklı olduğunu biraz sonra anlayacaksınız.          (Get-Command).Count komutu ile sizde kullanabileceğiniz komutların sayısını öğrenebilirsiniz. Bu şu demektir powershell ile bu komutları bilgisayarınızda kullanabilirsiniz.

Benim sonuçlarımda çıkan 1690 adet komut kendi içerisinde nasıl gruplanmış yani hangi modüllere dağılmış. Hangi modülde kaç tane komut var ve bunlar hangi komutlar birazdan hepsinin nasıl keşfedildiğini göreceğiz.

Şimdi Get-Module komutunu inceleyelim. Bu komut modüllerle ilgili yapacağımız işler için kullanılır.

Get-Module -ListAvailable komutu ile bilgisayarımızda yüklü olan tüm modülleri görebiliriz. Burda bir yanlış anlaşılma olmasın “bilgisayarımızda yüklü olan modüller” ifadesine dikkat edin. Komutu uyguladığımızda aşağıdaki çıktıyı alırız.

Ashampoo_Snap_11 Nisan 2018 Çarşamba_11h43m53s_007_

Bu komutla bilgisayarımda hangi klasörde hangi modüller yüklü, modüllerin isimleri nelerdir ve kısmende hangi modülde hangi komutlar var görebiliyorum. Modül isimlerinden o modülün ne işe yaradığını anlamak çok zor olmasa gerek.                              Get-Module -ListAvailable komutu bilgisayarımızda yüklü olan modülleri gösterir demiştik. Get-Command komutu ile de toplamda 1690 komut kullanabileceğimizi görmüştük. 1690 sayısı bu tüm modüllerin içerisindeki toplam komut sayısıdır.

Şimdide Get-Module komutunu tek başına kullanalım.

Ashampoo_Snap_11 Nisan 2018 Çarşamba_12h03m18s_008_

Komutun çıktısı olarak powershell oturumuna dahil ettiğim yada varsayılan olarak dahil olan 3 adet modüle olduğunu görüyorum. Toplamda da kullanabileceğim komut sayısı  202 olarak görünüyor. Diğer modullerde ki komutları kullanabilmem için öncelikle ilgili modülü açmış olduğum powershell oturumuna eklemem gerekiyor. Bunuda Import-Module komutu ile yapıyor olacağız.

Şimdi küçük bir çalışma daha yapalım.Ashampoo_Snap_11 Nisan 2018 Çarşamba_13h45m41s_010_

Ekran görüntüsünü incelediğinizde 1. Bölümde Get-Module komutu ile powershell oturumumuza dahil edilmiş modulleri görüyoruz.

2. Bölümde  Import-Module Windowsupdate komutu ile Windowsupdate modülünü powershell oturumumuza dahil ediyoruz.  Bu şu demek oluyor artık Windowsupdate modülünü yani komut setini kullanabilirim. Tekrar Get-Module komutunu yazdığımızda Windowsupdate modülünün eklendiğini görebiliyoruz. Bu modülün içerisinde hangi komutlar mevcut sorusunuda Get-Command -module Windowsupdate komutu ile öğreniyoruz.  Hemen hatırlatalım ekleyebileceğimiz modülleri görmek için Get-Module -ListAvailable komutunu kullanıyorduk.

3. Bölümdede Import-Module SmbShare komutu ile smbshare modülünü powershell oturumumuza ekliyoruz. Eklendiğini Get-Module komutu ile görüyoruz. Modülün içerisinde hangi komutlar olduğunuda Get-Command -module -Smbshare komutu ile görüyoruz.

Peki bu komutların ne işe yaradıklarını nasıl öğreneceğiz, birincisi komut isimleri komutların ne işe yaradıklarını az buçuk ifade ederler. İkinciside hatırlarsanız Get-Help komutismi yaparak ilgili komut hakkında yardım alabiliyorduk. Bunu önceki derslerimizde detaylıca anlatmıştık.

Bakınız;

https://kursatari.wordpress.com/2018/02/21/powershell-temel-dersler-4-powershelli-kesfediyoruzget-help-2/

Makalemizin başında modüllerin bulunduğu iki klasörden bahsetmiştik.

Ashampoo_Snap_11 Nisan 2018 Çarşamba_14h29m03s_011_

Bununla ilgili olarak kendi yazdığımız modülleri

Program files\Windowspowershell\modules  klasörünün altına koyacağız bu sayede tüm kullanıcılar ulaşabiliyor olacak.

Windows\system32\WindowsPowerShell\v1.0\ klasörü altında olan modules klasörü içinde, sunucumuza veya istemcimize bir uygulama kurduğumuzda beraberinde gelen modüllerin bulunduğu klasör olarak görebiliriz. Örneğin sunucumuza Active Directory veya Hyper-V rolü kurduğumuzda ilgili powershell modulü buraya yüklenecektir.

Bunlara ek olarak ta geçerli kullanıcının profilinde  kullanıcı\Documents\WindowsPowerShell\Modules  altındada modül klasörü bulunabilir.

Kendimiz bir modül yazmak istediğimizde yapmamız gereken tek şey scriptimizi .psm1 uzantısı ile kaydetmek sonrasında modül klasörlerinden bir tanesinde (Önerilen Programfiles\Windowspowershell\Modules) bir klasör oluşturup örneğin ilkmodulum isminde, sonra scriptimizi bu klasöre koyup Get-Module -Listavailable komutu ile görüp Import-Module ilkmodulum komutu ile yüklemek nihayetindede Get-Module yaptığımızda modülümüzün yüklenip kullanılabilir olduğunu görebiliriz. Şimdi bir tane modül hazırlayıp görelim.

İlk olarak basit bir script yazıyoruz scriptimizin adı MyPingApp olsun.

function MyPingApp {
param(
$client=”localhost”
)
Test-Connection $client
} MyPingApp

Scriptimiz kendisine parametre olarak verilen host a ping atmaya yarıyor. Scripti parametresiz kullanırsak varsayılan olarak “localhost” a ping atıyor olsun.

Kullanım şekli şöyledir.

Ashampoo_Snap_11 Nisan 2018 Çarşamba_15h49m13s_012_

Şimdi bu scripti sürekli kullanabileceğimiz bir modül haline getirelim.

İlk olarak scriptimizi MyPingApp.psm1 olarak kaydedip.  Modules klasöründe oluşturduğumuz klasörün içerisine kaydediyoruz.

Ashampoo_Snap_11 Nisan 2018 Çarşamba_15h53m52s_013_

Şimdi kontrollerimizi yapalım.

ilk olarak Get-Module -ListAvailable komutu ile artık moduller arasında kendi modülümüzü görüyor oluyoruz.

İkinci olarak Import-Module MyPingApp komutu ile modülü powershell oturumumuza ekliyoruz.

Son olarakta Get-Command -module MyPingApp ile modulümüz içinde hangi komutlarımız var görüyoruz. Aşağıdaki ekran görüntüsünde bu işlem adımlarını görebilirsiniz.

Ashampoo_Snap_11 Nisan 2018 Çarşamba_15h58m28s_014_

Evet arkadaşlar bir makalenin daha sonuna geldik.  Umarım keyifli ve anlaşılır bir makale olmuştur.

Bir Sonraki makalemde görüşmek üzere hoşcakalın.

Kürşat ARI / System Engineer & PowerShell  Developer

 

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s