1

Bu makalemde değişkenlerden ve powershell mimarisinin inşa edildiği .Net objelerinden bahsedeceğiz.

1. PS c:\> (12).gettype() dediğimizde .Net’in çok bilinen metodlarından birini kullanarak 12 sayısının hangi obje tipine sahip olduğunu görebiliriz.
Aynı şekilde bir string’i örnek olarak aldım.


Şekil-1

2. Bir obje, üyelerine (object members) sahiptir, Form.Title, Form.BackgroundColor gibi. Bir objeyi çağırdıktan sonra objenin alt niteliklere (property) değer ataması yaparsınız. Bu property değerleri objelere göre değişebilir. Bazılarına değer atayabilirsiniz ama bazıları kodlama içinde kullanabilmek için read-only bırakılmıştır. Verdiğiniz bir string ‘in uzunluk bilgisini aşağıdaki gibi alabilirsiniz ama ona bir değer atayamazsınız.
_________________________________________________
PS C:\> “mshowto.org”.length
11
PS C:\> “mshowto.org”.length=9
“Length” is a ReadOnly property.
At line:1 char:15
+ “mshowto.org”.l <<<< ength=9
_________________________________________________

3. Birkaç object method örneği görelim. Bu örnekler ve yaklaşımlar size ileride gelişmiş ve esnek PowerShell scriptleri yazmanızı sağlayacaktır. ToUpper methodu verilen string’i büyük harfe çevirecektir.
_________________________________________________
PS C:\> “erkan.sezgin”.ToUpper()
ERKAN.SEZGİN
PS C:\> “erkaN.SEZgin”.toLower()
erkan.sezgin
_________________________________________________

Not: Method sonundaki () ifadesini yazmadan çalıştırırsanız ToUpper ve ToLower methodu hakkında bilgiler gelecektir.
_________________________________________________
PS C:\> “erkan.sezgin”.ToUpper
MemberType          : Method
OverloadDefinitions : {System.String ToUpper(), System.String ToUpper(CultureInfo cu
TypeNameOfValue     : System.Management.Automation.PSMethod
Value               : System.String ToUpper(), System.String ToUpper(CultureInfo cul
Name                : ToUpper
IsInstance          : True
_________________________________________________

4. Property leri anlatmaya farklı objeler üzerinden örnekler verelim. Bu esnada powershell in yeteneklerini anlama fırsatı da bulacağız.

WMI

Aşağıdaki komut, sisteminizde çalışan process’lerin 7.sinin özelliklerini (Property) getirecektir.
_________________________________________________
PS C:\> (get-wmiobject win32_process)[7]
ProcessName                : svchost.exe
Handles                    : 225
VM                         : 62767104
WS                         : 5263360
Path                       : C:\WINDOWS\system32\svchost.exe
__GENUS                    : 2
__CLASS                    : Win32_Process
__SUPERCLASS               : CIM_Process
__DYNASTY                  : CIM_ManagedSystemElement
__RELPATH                  : Win32_Process.Handle=”1660″
__PROPERTY_COUNT           : 45
__DERIVATION               : {CIM_Process, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER                   : ERKAN_SEZGIN
__NAMESPACE                : root\cimv2

5. Scriptlerinizde objelerin alt özelliklerini çağırabilirsiniz. .Path property sini çağırdığımızda sadece ona ait olan değer gelecektir. Diğer property leri çağırmayı deneyebilirsiniz.

PS C:\> (get-wmiobject win32_process)[7].path
C:\WINDOWS\system32\svchost.exe

PS C:\> (get-wmiobject win32_ComputerSystem)
PS C:\> (get-wmiobject win32_Diskpartition)

6. Mesela çağırdığınız WMI objesinde property ler cok fazla ve okunamaz durumda.Satırın  sonuna pipe (|) ifadesi ve select column1,column2,…. İfadelerini eklerseniz sorgunuz alt alta gelen sonuçlar üretecektir.

PS C:\> (get-wmiobject win32_LogicalProgramGroup) | select name,InstallDate

WMI konusunu daha sonraki makalelerimde daha detaylı anlatmayı düşünüyorum.

7. Veri okuma konusunda PowerShell’in yeteneklerine biraz değinmek istiyorum. C:\test.xml dosyası açalım ve içeriğini aşağıdakine  benzer şekilde dolduralım. Taglar arasındaki bilgileri istediğiniz gibi değiştirebilirsiniz.

<Uyeler>
<Uye>
<ad>Erkan</ad>
<soyad>Sezgin</soyad>
</Uye>
<Uye>
<ad>Jack</ad>
<soyad>Bauer</soyad>
</Uye>
</Uyeler>

Not: Taglar için büyük/küçük harf duyarlılığına dikkat etmenizi öneririm.


Şekil-2

a) $ds=new-object data.dataset diyerek $ds değişkenine dataset objesi yaratıyoruz. Dataset objesi:veritabanı programcılığında herhangi bir tablodan (excel,access,SQL tablosu vs.) veri okumak için kullanılan bir obje türüdür.
b) $ds.readXML(….) komutuyla XML şemasını alıyoruz.
c) $ds.tables[0].rows[0].ad komutu ise ilk tabloda,1.satırın.ad kolonunda bulunan değeri getiriyor.

XML tablomuzu aslında aşağıdaki gibi anlayabiliriz.
Uyeler
Tables(0) Ad Soyad
Row(0) Erkan Sezgin
Row(1) Jack Bauer

XMLNODEADAPTER yöntemi ise bize daha uygun bir sorgu sağlayacak.


Şekil-3

a) $TestXML=new-object xml.xmldocument komutu ile anlayacağınız gibi objemizi yaratıyoruz.
b) $TestXML.load(“c:\test.xml”) dosyasını objeye bağlıyoruz.
c) $testXML.uyeler.uye komutu ise bütün xml tablosunu karşımıza getiriyor.isterseniz cümle sonuna pipe | komutu ile esneklik kazandırabilirsiniz.

Bu örnek küçük bir xml dosyası üzerinden yapıldı. İsterseniz daha kapsamlı XML dosyalarını parse ederek Powershell dünyasını keşfedebilirsiniz. Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

Windows PowerShell

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (1)

  1. 17/07/2013

    Powershell ile tam yol devam…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir