1. Anasayfa
  2. Service Manager (SCSM)

SCSM 2012 R2, Powershell ile Nasıl Kullanılır? – Classes ve Object – Bölüm 1


0

Service Manager 2012 R2 ürünü UR 8 ile birlikte kararlı bir hale geldi. Çıktığından bu yana birçok eksiği Service pack’ler ve update rollup’lar ile giderildi. Geliştirilmeye de devam ediliyor.

Service Manager ürünü diğer System Center ürünleri ile yan yana kullanıldığında sadece bir yardım masası ürünü olmaktan çıkıp, bir Asset Managemet ürünü, bir otomasyon ürünü gibi farklı rolleri de üstlenebiliyor. Artı bana göre en önemli özelliklerinden birisi de ortamdaki diğer Microsoft ya da non-Microsoft ürünler ile kolayca entegre olabilmesi.

Service Manager’ı etkin bir biçimde kullanmak için elinizde birçok alternatif bulunuyor. Etkin biçimde kullanmak ile kastettiğim şey, varsayılan olarak gelen konfigürasyonlar, iş akışları (workflows), arayüzler, görevler (Tasks) yetersiz kaldığında ihtiyaca uygun olarak custom konfigürasyonlar yapabilmeniz.

Bu tarz konfigürasyonları yapmanız için de açıkçası elinizde birçok araç bulunuyor.

Bunlar;

  1. Powershell
  2. Authoring Tool
  3. Orchestrator
  4. Visual studio Authoring Extensions
  5. Custom Kodlama (C# – SDK)

 

Ben bu yazı serisinde Service Manager mimarisinde Powershell’i nasıl etkin olarak kullanabileceğinizi anlatacağım. Sonrasında diğer araçlar için de makale hazırlamayı düşünüyorum. Servis Manager’ın yetenekleri Powershell ile nasıl daha ileriye taşıyabileceğinizi elimden geldiğince göstermeye çalışacağım.

SCSM 2012 R2 kurulumu ile birlikte builtin bir Powershell modülü geliyor. Ancak bu modül içerisinde bulunan CMDLet’ler çok yeterli değil. Daha efektif olması açısından codeplex’te bulunan SMLets modülünü de yüklememiz gerekiyor.

SMLets modülünü aşağıdaki linkten indirebilirsiniz.

https://smlets.codeplex.com/

İlgili linkten indireceğiniz MSI uzantılı dosyayı Management Server üzerine kurmanız yeterli olacaktır. Remote bir Server üzerine de kurulum yapabilirsiniz. Ancak o zaman modül dosyalarını editlemeniz gerekecektir. Önerilen SCSM Management Server rolüne sahip bir sunucu üzerine kurulum yapmanızdır.


Resim-1

Kurulumun ardından Powershell ile Service Manager ortamını yönetebilecek duruma geliyoruz. Bu makale Service Manager üzerinde Powershell kullanımını anlatacağım için en azından Service Manager kullanmış olmak, mimaride ki öğelere hakim olmak gerekiyor. O sebeple yeni başlayanlar için öncelikle mimariyi anlatan makalelerden başlamalarını öneriyorum.

Kurulum sonrasında modülü kullanabilmemiz için aşağıdaki gibi import etmemiz gerekiyor.


Resim-2

Şimdi Service Manager’ı Powershell ile yönetmeye başlayabiliriz.

Öncelikle Service Manager mimairisindeki Class ve Object mantığından biraz bahsetmek istiyorum.

Service Manager temelde ConfigurationItem ve WorkItem diye iki farklı class’ı içersinde barındırıyor. Bunların her ikisi de ana class olan System Class’ının sub class’larıdır.

Bu iki farklı class’a ait öğeler Konsolda ilgili çalışma alanları altında yer alır.


Resim-3

ConfigurationItems (Cıs) temel olarak envanterini tutacağınız ve work item’lar ile ilişkilendireceğiniz objelerdir. Bunlar örnek olarak aşağıdaki gibidir;

  • Kullanıcılar
  • Bilgisayarlar
  • Bussiness Service’ler
  • Yazılımlar
  • Tüm Hardware’ler
  • Yazıcılar

 

WorkItems ise süreç yönetimini yaparken kullanacağımız (olay yönetimi, talep yönetimi, değişiklik yönetimi vb.) objelerin ana class’ı dır.

Class’lar ve birbirleri ile iletişimini daha ayrıntılı olarak incelemek için aşağıdaki linkten SM_job_aids zipli klasörünü indirip class diagramını inceleyebilirsiniz.

http://go.microsoft.com/fwlink/?LinkId=186291

SCSM mimarisinde oluşturulacak çalışma öğesi objeleri ya da kullanıcı ve bilgisayar objeleri bu class’ların instance’ları olarak üretileceklerdir. Dolayısıyla oluşturulan iş öğesi ya da herhangi bir kullanıcıyı Powershell ile çağırmak istiyorsak öncelikle class’ı belirtmemiz gereklidir.

İlk adım olarak olay kayıtları ile ilerleyelim. Sonrasında diğer class’lar içinde işlemler yapalım.

Olay objelerinin türetildiği Class’ın ismi “System.WokItem.Incident“tır. ilk olarak bu class’ı get komutu ile çağıralım.

Bunun için Get-SCSMClass cmdlet’ini kullanıp –name parametresi ile Class ismini yazıyoruz.

PS C:\> Get-SCSMClass -Name System.WorkItem.Incident

Komutu çalıştırdığımızda istediğimiz class ile birlikte o classtan türetilmiş diğer class’larda listelenir. Ana class’ı direk elde etmek için aşağıdaki gibi class isminin sonuna $ işareti koymamız yeterli olacaktır.

PS C:\> Get-SCSMClass -Name System.WorkItem.Incident$


Resim-4

Class’ı ikinci bir komutta kolaylıkla kullanmak için bir değişkene atamak daha faydalı olacaktır. Komutu bir değişkene atayalım.

PS C:\> $IncidentClass = Get-SCSMClass -Name System.WorkItem.Incident$

Şimdi bu class’tan türetilmiş olay objelerini çağıralım. Class olarak daha önceden oluşturduğumuz $IncidentClass değişkenini bu komutta kullanarak ilgili class’a ait objeleri elde edelim.

PS C:\> Get-SCSMObject -Class $IncidentClass


Resim-5

Benim test ortamımda iki adet olay kaydı bulunduğu için komut çıktısında iki adet olay kaydı görünüyor. SCSM mimarisini kullanan bir ortamda bu komutu çalıştırdığınızda olay kayıtlarının hepsini listeleyecektir.

Şimdi elde ettiğimiz olay objelerini, üzerinde bulunan alanlara göre filtreleyelim.

Önce –filter komutu ile filtreleme yapalım. ID’ye göre filtreleyelim.


Resim-6

Görüldüğü gibi ID’si IR2 olan olay objesini elde etmiş olduk.

Aynı şekilde where-object ile de filtreleme yapabiliriz.

PS C:\> Get-SCSMObject -Class $IncidentClass| Where-Object{$_.Id -eq “IR2”}


Resim-7

İki komut ile de aynı sonucu elde edebiliriz fakat –filter ile daha hızlı şekilde istediğimiz veriyi alırız. Bu sebeple kayıt sayısı çok fazla ise filtrelemelerinizde –filter kullanmanız önerilir.

Get ettiğimiz objenin üzerindeki özelliklere(Attributes) ulaşmak için select parametresini kullanıp istediğimiz attribute’un ismini yazıp listeleyebiliriz.

PS C:\> Get-SCSMObject -Class $IncidentClass| Where{$_.Id -eq “IR2”}|select Id,Title,Status,Source,TierQueue


Resim-8

Yada Komutu bir değişkene atayıp değişken üzerinden (.) kullanarak objenin attribute’larına ulaşabiliriz.


Resim-9

Olay kaydı üzerindeki liste olan attribute’lar Enumeration olarak adlandırılırlar. Bunlar içerlerinde birden çok değer taşırlar ve bu değerler arasında parent/child ilişki vardır. Enumları ilerleyen makalelerde ele alacağım.

Ancak bu kısımda açıklamak istediğim bir durum var. Olay kaydının attribute’larını Powershell sorgusu ile elde ederken bir liste attribute’u get ettiğinizde “Title” attribute’undan farklı olarak aşağıdaki gibi çıktı ile karşılaşırız.


Resim-10

Karşılaştığımız çıktı bize list öğesinin enumeration değerini verir. Daha sonra bu objeyi ayrıntılı anlatacağım.

Komutun sonuna . koyduğumuz anda bu enumeration objesinin attribute’larını da elde edebilir duruma geliriz. Komutu aşağıdaki gibi çalıştırıyoruz.


Resim-11

Sonuç olarak olay kaydı üzerine atanmış olan tierqueue(Support Group) attribute’unun DisplayName attribute’unu elde etmiş oluyoruz.

Yine olay kaydı ile ilgili oluşturulma tarihi ve benzeri tarih bilgilerini de bu yolla elde edebiliriz.


Resim-12

Örnekleri çeşitlendirmek mümkün. Örneğin bu sefer kullanıcı objelerini Powershell soruları ile elde edelim.

Bu işlem için sırası ile;

  1. Kullanıcı Class’ını çağırıyoruz. (System.User$)
  2. Çağırdığımız Class’ı get-scsmobject komutu ile kullanıp class’a ait instance’ları elde ediyoruz.
  3. Ardından yapacağımız filtreleme ile spesifik objeleri elde ediyoruz.

 

PS C:\> $UserClass = Get-SCSMClass -Name System.User$

PS C:\> Get-SCSMObject -Class $UserClass


Resim-13

Şimdi kullanıcıları departmanı IT olanlar diye filtreleyelim.

Get-SCSMObject -Class $UserClass -Filter “Department -eq IT”


Resim-14

Yine select ile kullanıcı objelerini istediğimiz attribute’larına göre listeleyebiliriz.

PS C:\> Get-SCSMObject -Class $UserClass -Filter “Department -eq IT”|select DisplayName,Department,Title


Resim-15

Olay kaydında olduğu gibi herhangi bir objeyi bir değişkene atayıp . ile attribute’larına ulaşabiliriz.

PS C:\> $USER = Get-SCSMObject -Class $UserClass -Filter “Displayname -eq ‘Fırat YAŞAR'”

PS C:\> $USER.UserName


Resim-16

Birden fazla objeyi bir array’e de atayabilirsiniz. Bunun için yapmanız gereken birden fazla kayıt dönen komutu bir array’e eşitlemektir.

PS C:\> $UsersArray = @(Get-SCSMObject -Class $UserClass -Filter “Department -eq IT”)

PS C:\> $UsersArray


Resim-17

Sonrasında oluşturduğunuz array’e sorgu atabilirsiniz.

PS C:\> $UsersArray|where{$_.UserName -eq “firat.yasar”}


Resim-18

Bu bölümde Powershell mimarisinde class’ları ve objeleri nasıl kullanabileceğimizi görmüş olduk. Bir sonraki makalede Classlar arasındaki relationship’leri ele alacağım.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

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!

Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.

Yazarın Profili

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