1. Ana Sayfa
  2. Service Manager (SCSM)
  3. SCSM 2012 R2, Powershell ile Nasıl Kullanılır? – Script DateTime Values – Bölüm 7

SCSM 2012 R2, Powershell ile Nasıl Kullanılır? – Script DateTime Values – Bölüm 7

Service Manager mimarisi Multi Language olarak yapılandırılmıştır. Her dil mimari içerisinde bir koda sahiptir. Örneğin Türkçe için TRK, İngilizce için ENU gibi. Bu amaçla eklediğimiz her List öğesi için, yada Task için ya da Workflow için aklınıza ne geliyorsa farklı dillerde konfigüre etmeniz mümkün. Yaptığınız konfigürasyonlar konsolun dilini değiştirdiğinizde etkin olacaktır. Kısaca tamamen Global ve çok dilli bir ürün konfigürasyonunu kolaylıkla yapabiliriz.

Bununla birlikte Service Manager mimarisinde Date-Time elementlerinin de bu durumla uyumlu olması gerekir. Bu amaçla SCSM mimarisindeki tüm tarih bilgisi Database üzerinde UTC formatında Store edilir. Kullanılan Local Time’a göre dönüştürülüp konsol tarafına sunulur.

Şimdi bir kaç örnek ile anlatmak istediğimi aktarayım. Örnek bir olay objesi alalım. Bu olay objesinin veri tabanındaki kaydı üzerindeki tarihler ile konsol üzerindeki tarihleri karşılaştıralım.

Şekildeki gibi IR2 objesinin Created Date’ine baktığımızda bunun 2016-01-05 23:33:51 olduğunu görüyoruz.


Resim-1

Şimdi aynı kaydı bir de konsol üzerinde sorgulayalım. Şekildeki gibi Created on bölümüne baktığımızda tarih’in 06.01.2016 1:33:51 olduğunu görüyoruz. DB deki zaman değeri ile konsoldaki farklı J


Resim-2

Bu ilk bakışta bir sorunmuş gibi gözükse de aslında değil. Farklı lokasyonlarda hizmet veren bir service manager organizasyonunu düşündüğümüzde, Database üzerine her bir lokasyon için farklı zaman değerler atması yerine Database’de tüm lokasyonlara ait tarihleri UTC formatında tutması, datayı çekerken lokasyon bazlı sonucu bize sunması son derece geniş çaplı düşünüp büyük organizasyonlara hizmet edecek şekilde dizayn edildiğini gösteriyor.

Şimdi işin bu kısmına kadar herşey güzel. Fakat Powershell Scriptler ya da Workflow’lar üzerinde Date-Time değerleri ile ilgili işlem yapılacağı zaman dikkat etmemiz gereken bir kaç nokta var. Yoksa Date Time değerleri tutarsız olacaktır.

Örnek olarak IR2 olay objesini bir değişkene atayıp Date bilgilerini sorgulayalım.

#Olay class’ını değişkene atayalım.

$OlayClass = Get-SCSMClass -Name System.WorkItem.Incident$

#Olay objesini elde edelim.

$OlayObjesi = Get-SCSMObject -Class $OlayClass -Filter “Name -eq ‘IR2′”

#Created Date attribute’unu sorgulayalım.

$OlayObjesi.CreatedDate


Resim-3

Görüldüğü üzre Powershell bize Database’deki UTC formatını verecektir. Gerçek Local zamanımıza uygun (Konsolda gördüğümüz) veriyi elde etmek için Komutu aşağıdaki gibi çalıştırmamız gerekiyor.

$OlayObjesi.CreatedDate.ToLocalTime()


Resim-4

Datayı sorgulama kısmında işlemi bu şekilde yapıyoruz. Buna karşın Date-Time bilgisini atama kısmında dikkat etmemiz gereken şey ise, Date-Time bilgisini Database’e UTC formatında yazmak. UTC formatında yazmazsak tutarsız tarih bilgisi ortaya çıkacaktır. Bunu bir örnek ile açıklayalım.

Örnek bir olay kaydı oluşturalım. Oluşturulma tarihi aşağıdaki gibi saat 19:17’dir.


Resim-5

Şimdi bu olay kaydını Powershell ile sorgulayıp oluşturulma tarihini öğrenelim.


Resim-6

Gördüğünüz gibi arada 2 saatlik bir saat farkı mevcut. Bu DB üzerindeki UTC değeri.

Peki şimdi biz bu kayıt üzerinde First Response Date ataması yapalım. Bu amaçla aşağıdaki Script’i kullanıyorum.

#Modülü import edelim.

import-module SMLets

#Tarih değişkenimizi ayarlayalım. Tarihinormal olarak Get-Date ile alalım.

$Date = (Get-Date).ToString(“dd/MM/yyy HH:mm:ss”)

#Olay class’ını değişkene atayalım.

$OlayClass = Get-SCSMClass -Name System.WorkItem.Incident$

#Olay objesini elde edelim.

$OlayObjesi = Get-SCSMObject -Class $OlayClass -Filter “Name -eq ‘IR10′”

#Elde ettiğimiz objenin first response Date attribute’una ilgili tarih değişkenini atayalım.

Set-SCSMObject -SMObject $OlayObjesi -Property FirstResponseDate -Value $Date

Scripti çalıştırdıktan sonra olay kaydını konsol üzerinden kontrol edelim.


Resim-7

Tarihleri kontrol ettiğimizde gariplik var. Oluşturma tarihim doğru. Ancak first response Date olarak 2 saat sonrasını gösteriyor.

Sistem bizim saati UTC olarak girdiğimizi sanıp üzerine Local Time Zone’umuza göre +2 saat ekliyor.

Biz saati Local Time zone’umuzda girdiğimiz için zaten +2 saatlik bir farkımız olmuş oluyor. Sisteminde +2 eklemesi ile UTC ile aramızda +4 saat fark olmuş oluyor. Dolayısı ile +2 saat gerçek zamandan sapmış oluyoruz.

Burada yapılması gereken Script ile yaptığımız Date-Time girişlerinde girişi UTC’ye göre yapmaktır. Bu sayede kayıt DB’ye UTC formatında eklenir ve konsola gelirken Local bölgesel ayarlarımıza göre uygun saat eklemesi yapılır.

Şimdi Script’imizi tarihi UTC olarak girecek şekilde edit’leyelim. Bu amaçla tarih kısmını aşağıdaki gibi değiştirelim.

$Date = (Get-Date).ToUniversalTime().ToString(“dd/MM/yyy HH:mm:ss”)

Bu işlemle tarih elde edilip ToUniversalTime() metodu ile UTC formatına dönüştürülecektir.

Şimdi Scripti çalıştırıp konsol üzerinde kaydı tekrar kontrol edelim.

Scripti çalıştırdıktan sonra Date-Time bilgilerinin aşağıdaki gibi düzgün şekilde geldiğini görebilirsiniz.


Resim-8

Yardım masası süreçlerinde tarihler ve saatler oldukça önemlidir. Tüm ölçüm işlemleri bu değerler baz alınarak yapılır. Bu sebeple bu duruma dikkat edilmesini önemle tavsiye ederim. Aksi taktirde bir biri ile uyuşmayan tarih bilgileri ve ölçülemeyen datalar ortaya çıkacaktır.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

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.

Yorum Yap