10 Kasım 2009 Salı

Sharepoint 2010 Powershell Desteği

Sharepoint 2007 üzerinde geliştirme yapanların, yazdığı kodları denemenin veya bir seferlik çalıştırılacak olan kodların kolayca çalıştırılıp işini yapması için en çok tercih ettikleri yöntem Visual Studio'da bir Console Application oluşturmaktı. Sharepoint contexti dışında bu kodlar çalıştırılır, yapılmak istenen yapılır, sonra gerçek geliştirme ortamına dahil edilirdi. Bu geliştiriciye zaman kazandıran bir yöntemdi fakat artık bu kadar da uğraşmaya gerek kalmayacak.

Powershell nedir?
Powershell, Microsoft'un geliştirmiş olduğu modern bir komut uygulaması olarak düşünülebilir. Klasik "Command Promt(cmd.exe)"tan daha güçlü, daha yetenekli, üzerinde scriptler yazıp çalıştırabileceğiniz bir uygulama. Ve Sharepoint geliştirme ekibi bu nimetten biz Sharepoint geliştiricilerinin de yararlanmasını istemiş ki bize "Microsoft.Sharepoint.Powershell" kütüphanesini hazırlamış.

Bizim STSADM.EXE'miz vardır?
Bu kütüphane sayesinde, powershell üzerinde bir çok Sharepoint komutunu çalıştırabiliyoruz. Bu eminim size de yeni nesil "STSADM.EXE"yi çağrıştırdı. Powershell, STSADM'nin yerini alıyor. STSADM'de hali hazırda var olan komutlara yenilerini ekleyebildiğimizi biliyorduk (http://emirelkabes.blogspot.com/2009/10/kendi-stsadm-commandimizi-yaratmak.html) Powershell ile buradaki hantallıktan da kurtulup kendi komutlarımızı kolaylıkla oluşturabileceğiz. STSADM extensionlar, 2010'la birlikte deprecated(geçerliliği kalmamış) sayılacaktır.

Nereden ve nasıl başlayacağız?
Powershell üzerinde Sharepoint komutlarını çalıştırmaya iki şekilde başlayabilirsiniz.
  1. Powershell'i açıp Sharepoint snapin'ini ekleyerek. Snapini şu komutu çalıştırarak ekleyebilirsiniz:
    Add-PSSnapin Microsoft.Sharepoint.Powershell
  2. Başlat Menüsü > Yönetimsel Araçlar(Administrative Tools) > Sharepoint Management Console
Bu ikisinden birini yaptıktan sonra Sharepoint Cmdlet'lerini çalıştırmaya başlayabilirisiniz.

Neler yapabiliriz?
İlk etapta aklınıza gelen her şeyi. Satır satır kod yazarak sadece bir enter tuşuyla çalıştırabilirsiniz. Site Collection'lara, Site'lere, listelere, listitemlara erişebilir, okuyabilir, yazabilirsiniz, sorgulayabilirsiniz. Bir solution'ı kurabilir, bir feature'ı aktive edebilirsiniz. Bir objeyi bir değişkene atıp satırlar sonra tekrar kullanabilirsiniz. Tüm bu komutları ezberlemek veya sürekli arama motorlarında bu komutları aramamız mı gerekecek diye soran kişilere ise yüreklerine su serpecek bir cevabım var: Intellisense. Powershell intellisense desteği vermektedir.

Başka başka?
Kodunuzu sadece komut satırında çalıştırmak işinize yaramıyorsa, aynı kodu defalarca kullanmanız gerekiyorsa(ki mutlaka gerekecektir) eski alışkanlıklarımız içerisinde bulunan .bat dosyaları gibi .ps1 dosyaları hazırlayabilir ve istediğiniz zaman bunları çalıştırabilirsiniz. Eski alışkanlıklarınızdan biraz daha sıyrılıp bu işi notepad üzerinde değil intellisense desteği veren, renkli yazıları destekleyen Powershell ISE(Integrated Scripting Environment) gibi güçlü bir araç kullanabilirsiniz, üstelik debugging bile yapabilirsiniz.

Örneklemek gerekirse?
Bir kaç satır kod örneği göstermek gerekirse:

if($args)
{

   $SiteNameInput = args[0]

   $SiteUrl = "http://testportal/"
   $NewSiteUrl =  $SiteUrl + $SiteNameInput
   Write-Host "Yeni webimiz : " + $SiteNameInput + " olusturuluyor."
   $NewSite = New-SPSite -URL $NewSiteUrl -OwnerAlias Administrator -Template PUBLISHING#0 -Name $SiteNameInput
   $RootWeb = $NewSite.Rootweb
   $RootWeb.Title = "Powershell ile olusturulmus bir site : " + $SiteNameInput
   $RootWeb.Update()
   Write-Host $SiteNameInput + " başarıyla oluşturulmuştur."
}
else
{

   Write-Host "HATA : YeniWebOlustur.ps1 i calistirmak icin site adini parametre olarak girmelisiniz."
}
Kodun ne yaptığı açık bir şekilde anlaşılıyor, yeni bir SPSite oluşturuyoruz. Yukarıdaki kodu Powershell ISE'de veya Notepad'de yazıp YeniWebOlustur.ps1 olarak kaydettikten sonra PowerShell üzerinde site adını parametre olarak geçerek çalıştırdığımızda, verdiğimiz isimde yeni bir SPSite oluşacaktır. Görüldüğü üzere bir Console Application'da kod yazıyor kadar özgürüz.

Peki kendi snap-in'lerimizi oluşturmak istersek?
Bu da mümkündür.SPNewCmdletBase SPSetCmdletBase gibi sınıfları kullanarak yeni snap-inler oluşturabiliriz. Oluşturduğumuz snap-in'lerde c# kullanarak yazıp derlediğimiz kodları, PowerShell'e register ettikten sonra bu snap-in'i yüklediğimizde yazdığımız cmdlet'leri istediğimiz zaman kullanabileceğiz. Snap-in geliştirmeyle ilgili ilerleyen günlerde bir yazı yazacağım. Şimdilik ilgilenenlere bir adres tavsiye edebilirim : http://stsadm.blogspot.com/2009/10/creating-custom-sharepoint-2010-cmdlets.html

Özetle...
Artık STSADM yok, zaten gerek de yok. İstediğimiz işleri fazlasıyla PowerShell üzerinden Microsoft.Sharepoint.Powershell.dll kütüphanesiyle yapabiliyoruz. Geliştirme ekipleri kendi script kütüphanelerini veya snap-in'lerini oluşturabilir defalarca aynı scriptlerin yazmaktan kurtulabilir. Buradan sonrası sizin ihtiyaçlarınıza ve bu ihtiyaçlarınıza bulacağınız en iyi çözümlere bakmaktadır. Fakat şu bir gerçek ki hayatımız eskisinden biraz daha kolay olacaktır.

Sharepoint 2010 üzerindeki yeni gelişmeler için blogumu takip etmeye devam ediniz.

1 yorum:

Emir Elkabes dedi ki...

eline sağlık dostum, faydalı bir makale olmuş.

Yorum Gönder