Skip to main content

· 3 min read

Azure Automation kullanabilmeniz için Azure Subscription sahip olmanız gerekiyor. Mevcut bir Azure hesabı sizlere Azure üzerindeki kaynaklara erişmenizi sağlar. (Cloud Services, Service Bus, Storage Account, Mobile Services, vd) Azure Automation Account hesabı ise, mevcut hesabınız için tüm otomasyon kaynaklarını tutar. ( Runbook, assets)

Yeni bir Automation Account oluşturmak için birçok yöntemimiz bulunur. Bunlardan en basit ve en kolayı mevcut Azure Portal içerisinden veya Preview Portal üzerinden yeni bir Azure Automation Account yaratabilmektir. Azure üzerinde ihtiyaçtan dolayı birçok Automation Account yaratılabilir. Farklı Azure Region üzerindeki IT Operasyonel işleri yöneten kişilere ait farklı Automation hesapları oluşturulabilir. Bir subscription içerisinde 30 adet farklı Automation Account yaratılabilir.

Automation Account oluşturulması

Azure Management Portal üzerinde oturum açılır. Portal içerisinden sol tarafta Automation kısmına gelip "Create an Automation Account" seçilir.

100415_1851_AzureAutoma1.png

Karşımıza gelen ekran içerisinde Automation Account hangi Region üzerinde yaratılacağını ve geçerli bir isim verilerek "Complete" butonu tıklanır.

100415_1851_AzureAutoma2.png

Hesabımızın başarıyla oluştuğunu gördükten sonra, artık Automation Account içerisindeki kavramları incelemeye başlayabiliriz. Automation Account içerisine girdiğim zaman karşımıza bizi "Get Started" sayfası karşılıyor olacak.

100415_1851_AzureAutoma3.png

Karşımıza gelen "Get Started" dışında yan taraflarında birçok sekme var. "Get Started" sayfası içerisinde yeni bir runbook oluşturmak, Technet Gallery üzerinden geliştirip paylaşılan hazır runbook'lara erişmeniz mümkün. Automation Account içerisindeki sekmeleri sırasıyla inceleyelim ve neler yaptığını anlayalım.

  • Dashboard : Otomasyon süreçleri için diagnostic, job state ve usage information gibi bilgileri gösterir. Bununla beraber, 30 gün veya istenilirse bir saatlik detaya kadar Account içinde gerçekleşen farklı işlerin durumunu ( başarısız, durdu, tamamlanmış ve çalışan) gibi bilgileri gösterir. Son olarak da mevcut Automation Account içerisinde runbook sayısını ve değişkenlerinin toplam sağ alt kısımdan rakamlarını görebilirsiniz. 100415_1851_AzureAutoma4.png
  • Runbooks : Mevcut yazdığınız veya Gallery üzerinden indirdiğiniz tüm Runbook bu ekran içerisinde gözükmektedir. Belirli tarihler ve saatler ile runbook durumunu için filtreleme yapabilirsiniz. Dilerseniz kendiniz geliştirdiğiniz Runbook Import edebilir yada başkasına göndermek amacıyla export edebilirsiniz.

100415_1851_AzureAutoma5.png

  • Assets : Runbook içerisinde kullanılan değişkenlerin yönetimi bu bölümden sağlanır. Variables, Connection, Schedule isteğe bağlı olarak bu değişkenler eklenir. Eklenen bu değişkenler, Automation Account içerisindeki tüm runbooklar tarafından erişilebilir. Integration Module sayesinde ilgili cmdlet ailesini Azure Automation içerisine yükleme şansına sahipsiniz. Bildiğimiz gibi Powershell içerisin de Module mantığı vardır. Azure Automation tarafında bir workflow geliştirdiğinizi hayal edelim. Bu Workflow içerisin de örnek olarak Active Directory veya Office 365 ile ilgili cmdlet bulunduğu varsayalım. İşte bu cmdletlerin Azure Automation tarafından bilinmesi için ilgili modülleri Azure Automation hesabının içine atılması gerekiyor. İstediğiniz Powershell Modulünü buradan "Import Module" tıklayarak ekleyebilirsiniz.

100415_1851_AzureAutoma6.png

  • Scale : Free veya Basic olarak Automation planınızı seçmenize olanak verir. Bu kısımda önemli ve atlanmaması gereken bir nokta var, seçtiğiniz plan Azure Subscription içerisindeki tüm Automation hesapları için geçerlidir. Ücretsiz plan ayda 500 dakikaya izin verir ve fatura edilmez. Eğer kullanımı sınırsız dakika gerekiyorsa, Basic planını seçin. 100415_1851_AzureAutoma7.png

· 3 min read

Bir önceki yazımızda, Automation Account oluşturma adımlarından bahsettik ve Assets kavramını kısa bir açıklamasını önceki yazımızda yapmıştık. Bu yazımızda Assets kavramını detaylandırmaya çalışacağız. Assets bölümü Azure Automation hesabı içerisin de en önemli kısımlardan biridir. Assets bölümünde Azure Automation Account hesabı için Integration Module ve Settings kısmı bulunmaktadır. Açıkcası bu kısma Settings demek pek hoşuma gitmiyor. Portal içerisinde bu şekilde ekleyeceğiz ama değişkenler demek bundan sonra daha doğru gibi gözüküyor.

Runbook aktivitelerinizin içerisin de kullandığınız cmdlet eğer ilgili Automation Account içerisinde yok ise Assets içerisinde Integration Module ile yükleme şansına sahipsiniz. Bu işlem bizim için oldukça basit. Assets bölümünü kullanmamızdaki diğer temel amaç eklediğimiz Settings ( Değişkenlerden) oluşmaktadır. Tüm script dillerinde olduğu gibi PowerShell içerisinde de string ya da integer tabanlı nesneler istenilen değişkenlere atanarak, scriptin devam eden bölümünde ihtiyaç olduğunda rahatlıkla kullanılabilir. Biz portal içerisinden "Add Settings" tıklayarak değişkenler oluşturarak Runbook içerisinden bu değişkenlere erişim sağlayarak Workflow'un devam eden bölümünde ihtiyaç olduğunda kullanabileceğiz.

Assets kısmında bulunan değişkenlere ve Integration Modüllere erişim noktasında önemli bir bölüm var. Tanımlamış olduğunuz değişkenleriniz veya eklediğiniz Integration Modülleriniz geliştirdiğiniz farklı Runbook aktiviteleri içerisinden tekrar erişilebilir durumdadır. Bu kısma örnek verecek olursak aşağıdaki resimden ilerleyelim.

100515_2118_AzureAutoma1.png

Yukurdaki resimde üç adet "Asset 1", "Asset 2", "Asset 3" adında değişkenlerim bulunuyor. Bu değişkenler, sırasıyla "Integer", "String" ve "Credential" olduğunu varsayalım. "AA" adında bir Azure Automation Account içerisinde tanımlı olarak gözükmektedir. Bununla beraber bu Automation Account içerisinde iki adet Runbook aktivitem var. Bunlar "A" ve "B" adında gözükmektedir. Bu Runbook aktivitelerinde yazılan Powershell Workflow içerisinde tanımlamış olduğumuz Settings(Değişkenler) "Get-AutomationVariable –Name değişkenadı" şeklinde çağrılır ve geliştireceğiniz Runbook içerisinden erişebilirsiniz.

Azure Portal içerisinden, "Add Settings" tıklanarak herhangi yeni bir değişken oluşturmak istediğiniz zaman, karşımıza gelen değişken tiplerini tanıyalım.

  • Credential Asset : Bu değişkeni eklemek istediğiniz zaman karşınıza iki farklı tip ile geliyor olacak. Bunlar "Certificate ve Powershell Credential" şeklinde gözükecektir. Oluşturulacak olan Credential değikenine isim verdikten sonra, Assets bölümünde gözükecetir. Bu değikenler şifrelenir ve her otomasyon hesabı için oluşturulan benzersiz bir anahtar kullanarak Azure Automation hesabı içinde saklanır. Bu anahtar bir ana sertifika tarafından şifrelenir.
  • Connection Asset : Automation hesabınızda oluşturduğunuz Runbook aktiviteleriniz üzerinden herhangi bir harici hizmete veya uygulamaya bağlanmak için gereken bağlantı bilgileri için tanımlanır.
  • Variable Asset : Runbook aktivitelerini geliştirirken en çok işimiz olacağı yer. Powershell içerisinde tanımladığımız "String","Integer","Boolen","DateTime" tipinde nesneler tanımlanarak değişken haline gelir ve Runbook aktiviteleri içerisinden çağırılır.
  • Schedule : Geliştirdiğimiz Runbook aktivitelerini Schedule bir şekilde çalışmasını sağlamak için oluşturduğumuz değişken yöntemidir.

Assets oluşturmanın birçok yöntemi var. İsterseniz, Azure Portal, Preview Portal ve Azure Powershell ile yaratma şansına sahipsiniz.

Azure Portal içerisinden bir "String" tipinde Variable Asset oluşturalım. Automation Account içerisine girdikten sonra, "Add Settings" tıklanır ve karşınıza yukarıda bahsetmiş olduğumuz Asset tipleri gelmektedir. Bu kısımda "Add Variable" seçilir.

100515_2118_AzureAutoma2.png

Add Variable seçip ilerledikten sonra, karşımıza değişken tipleri gelecektir. Bu ekranda ben "String" tipinde oluşturacağımı söyleyeceğim ve içerisine bir değer gireceğim.

100515_2118_AzureAutoma3.png

Variable Type olarak String seçildi ve değişkenimizin adı "MyNewVariable" olarak belirledik bir sonraki ekrana geçerek değişkenimize değer ataması gerçekleştireceğiz.

100515_2118_AzureAutoma4.png

Yeni bir String tipinde Varriable Asset tanımlamış durumdayız. Artık Automation Account içerisindeki tüm Runbook aktiviteleri üzerinden erişilebilir durumdadır. Tanımladığımız değişkeni Runbook içerisinde yazdığımız Powershell Workflow içerisinden çağırmak için aşağıdaki örnek bizlere yol gösterecektir. Yukarıdaki ekran içerisinde bir yere daha dikkatinizi çekmek istiyorum, "Encrypted" kapalı olarak gelmiş durumdadır. Eğer bu özelliği aktif ederseniz, tanımladığınız değişkenleriniz Automation hesabınız içerisinde Encrypted bir şekilde saklanacaktır.

100515_2118_AzureAutoma5.png

Get-AutomationVariable cmdlet'ini Runbook içerisinde kullanarak tanımladığım Asset adını gönderek değişkenin içerisindeki değere Runbook içerisinden artık erişebilir durumdayım. İsterseniz, Azure Powershell Module ile yeni bir değişken yaratabilirsiniz.

100515_2118_AzureAutoma6.png

100515_2118_AzureAutoma7.png

· 4 min read

Artık Automation yazımızın son bölümüne geldik. Oluşturduğumuz iki adet Runbook ( StartVM ve StopVM) içerisine Powershell Workflow kod bloklarımızı yazalım. Bu kısımda ilk olarak "PeakUp-StartVM" adındaki Runbook aktivitesini geliştirmek olacak. Runbook aktivitesinin adında anlaşılacağı gibi, belirlediğimiz Virtual Machine Start etmek için kullanacağımız "Start-AzureVM" cmdletini bir döngü içerisinde kullanıp ve bu cmdlet içerisine parametreler göndererek Workflow içersinde kullanacağınız. Bu parametreler, "Start-AzureVM" cmdlet'ine ait mandatory(zorunlu)olarak adlandırıyoruz. "PeakUp-StartVM" runbook aktivitesinin içerisine girip "Author" sekmesinden Draft bölümüne aşağıdaki bulunan kod bloğunu yapıştıralım ve "Publish" edelim.

100615_2045_AzureAutoma1.png

workflow PeakUp-StartVM { #Check to Day $day = (Get-Date).DayOfWeek if ($day -eq 'Saturday' -or $day -eq 'Sunday'){ exit }

# Static variables taken from Azure Automation Assets
$Credential = Get-AutomationPSCredential -Name 'ServiceAccount'
$SubscriptionId = Get-AutomationVariable -Name 'SubscriptionId'
Write-Output "Subscription Id is: $SubscriptionId \`n"
# Connect to Azure
Add-AzureAccount -Credential $Credential
# Select the Azure subscription to use in this workflow
Select-AzureSubscription -SubscriptionId $SubscriptionId
# TODO : replace with your Azure VMS / Service names
$VMsToStart = @(
@{
Name = "Student"
ServiceName = "studenttest"
},
@{
Name = "VmName2"
ServiceName = "VmName2"
})
Foreach ($VM in $VMsToStart){
Start-AzureVM -Name $vm.Name -ServiceName $vm.ServiceName}

}

Publish ettikten sonra, Kod tarafını biraz açıklama gereği hissediyorum. Bir çok kişinin aklına takılabilecek olan yerler var. İlk önce, "IF" statement içerisinde yazdığımız kısım Runbook aktivitesi hergün çalışacağından dolayı hafta sonuna denk geldiği anda Statement doğru olduğu zaman ilgili kod blok devreye girerek Workflow sonlandıracaktır. "IF" kısmı yazmamızın sebebi, Runbook aktivitesini Schedule ederken hafta sonu gibi bir belirtme şansımız olmadığı için bunu Workflow içerisin de belirttim.

Kod bloğu içerisin de diğer satırların açıklamları şu şekilde

  • Line 9 – 11 : Tanımlamış olduğumuz Asset içerisinden çağırıp değişkenlere atayarak Powershell Workflow'un ilerleyen satırlarında çağırmak için yapılan aksiyondur.
  • Line 13 : Add-AzureAccount cmdlet sayesinde Azure kaynaklarına erişmek için subscription eklenmesi sağlanmıştır.
  • Line 15 : Eklenen hesabın içerisinde birden fazla Subscription olacağından dolayı işlem yapılmak istenen SubscriptionId gönderilerek seçilmiştir.
  • Line 17 : Hashtable oluşturarak, işlem yapılması istediğimiz VM'lerin Name ve CloudService isimlerini bir tablo haline getirerek döngü içerisinde kullanılması hedeflenmiştir.
  • Line 26-28 : Oluşturulan HashTable içerisindeki her Item için foreach döngüsü kullanarak Start-AzureVM cmdlet içerisine parametre gönderilerek Runbook aktivitesinin yapılması istenen iş gerçekleştirilmiştir.

Sıra geldi "PeakUp-StartVM" isimli Runbook aktivitemizi Schedule etmeye işlemine, geliştirilen Runbook aktivitesi herhangi bir şirketin mesai saati başladığı zamanlarda ilgili Virtual Machine otomatik bir şekilde başlatması hedeflenmektedir. Bu schedule işlemini yaparken optimum saatin belirtlenmesi önemlidir. Ben şimdilik hergün "08:00" olarak schedule olarak çalışacak şekilde ayarlayacağım.

100615_2045_AzureAutoma2.png

"PeakUp-StartVM" adlı runbook aktivitesini Schedule bir duruma getirdik. Schedule sekmesine gidelim ve kontrolleri sağlayalım.

Schedule bir şekilde çalışacağını gördükten sonra, "PeakUp-StopVM" adlı Runbook aktivitesinin geliştirme aşamasına geçebiliriz. Yapacağımız aslında çok basit, "PeakUp-StartVM" adlı runbook içerisinde yazdığımız kod bloğunun sadece, Start-AzureVM cmdlet'i yerine "Stop-AzureVM" kullanıp Schedule ederken ilgili değişkeni göstermek. Hemen Runbook editor kısmına gelip Powershell Workflow yazıyorum.

100615_2045_AzureAutoma4.png

workflow PeakUp-StopVM { #Check to Day $day = (Get-Date).DayOfWeek if ($day -eq 'Saturday' -or $day -eq 'Sunday'){ exit }

# Static variables taken from Azure Automation Assets
$Credential = Get-AutomationPSCredential -Name 'ServiceAccount'
$SubscriptionId = Get-AutomationVariable -Name 'SubscriptionId'
Write-Output "Subscription Id is: $SubscriptionId \`n"
# Connect to Azure
Add-AzureAccount -Credential $Credential
# Select the Azure subscription to use in this workflow
Select-AzureSubscription -SubscriptionId $SubscriptionId
# TODO : replace with your Azure VMS / Service names
$VMsTostop = @(
@{
Name = "Student"
ServiceName = "studenttest"
},
@{
Name = "VmName2"
ServiceName = "VmName2"
})
Foreach ($VM in $VMsTostop){
Stop-AzureVM -Name $vm.Name -ServiceName $vm.ServiceName -Force}

}

"PeakUp-StopVM" isimli Runbook aktivitemizi Publish ediyorum ve Schedule işlemiyle devam edelim. Geliştirilen Runbook aktivitesi herhangi bir şirketin mesai saati bitiği zaman ilgili Virtual Machine otomatik bir şekilde kapatılması istiyoruz. Hatırlarsanız, Schedule değişkenimizi bir önceki yazımızda Powershell ile yaratmıştık ve orada ilgili değerleri hergün "19:00" olarak belirttik. Şimdi Schedule işlemini Powershell aracılığı ile gerçekleştirelim.

100615_2045_AzureAutoma5.png

Runbook aktivitesini Powershell ile Schedule etmek için, "Register-AzureAutomationScheduleRunbook" cmdlet bizlere yardımcı oluyor. Bu cmdlet içerisine "AutomationAccount","RunbookName" ve "Schedule" objesini göndererk register işlemini gerçekleştirdik. Artık yapmamız gereken, Runbook aktivitesini belirtlediğimiz aralıklarda Virtual Machine için gereken aksiyonları yapacaktır. Basit bir Runbook ile maliyet tarafında çok büyük avantajlar sağladık. Yazımıza son olarak bir cümle eklemek istiyorum, Azure Automation da yapabilecekleriniz sizin hayal gücünüze bağlı olduğunu unutmayalım.

· 5 min read

System Center Orchestrator içerisinde kullanılan bir kavram olan Runbook, Service Management Automation ve Azure Automation içerisinde aynı isimle anılmaktadır. Bir Runbook aktivitesi kurumunuz içerisin de tanımlı olan iş süreçlerini, sistem ve yazılım bileşenlerini içeren çeşitli şirket operasyonlarını bir araya getirilerek oluşturulduğu rutin süreçler olarak söylenebilir. İlgili Runbook senaryoları oluşturulurken en uygun çözümleri içeren akış şemaları çizilir. Bu süreçlere örnek verecek olursak, Maintance ve Life Cycle Management, Log Management. söylenebilir.

Azure Automation üzerinde Runbook oluştururken karşımıza birçok yöntem çıkmaktadır. Şimdi bu kısımları sırasıyla inceleyelim.

  • Import Runbook : Kendi ortamınızda hazırlamış olduğunuz Powershell Workflow syntaxına uygun bir şekilde ".ps1" uzantılı dosyalarınızı upload yöntemiyle oluşturduğumuz yöntemdir.
  • Import From Gallery : Powershell ile ilgilenenler Technet Script Center üzerinden ihtiyacımız olan bir çok Powershell Script'lerini bulabilmekteyiz. Azure Automation için paylaşılan tüm hazır Runbook şablonlarına "Import runbooks from the Gallery" tıklayarak ulaşabilirsiniz. Gallery içerisine isterseniz, Automation Dashboard ekranından ulaşabilirsiniz.
  • Quick Create Runbook : Bu yöntem ile Automation hesabınız içerisin de yeni bir Runbook oluşturabilirsiniz. Oluşturduktan sonra, ihtiyacınıza göre Powershell Workflow'unuzu geliştirebilirsiniz.

Yukardakilerin dışında eklenebilecek ufak bir konu daha var. On-Premises yapıda kullanılan Orchestrator üzerinde bulunan mevcut flow chart yapısını Automation içerisine aktarmak istenildiği zaman akıllara Migration senaryoları gelmektedir. Bunun için Microsoft'un geliştirdiği System Center Orchestrator Migration Toolkit sayesinde SMA ve Azure Automation üzerine taşıma senaryolarını desteklemektedir.

Runbook oluşturma yöntemlerinden bahsettikten sonra, Quick Create yöntemiyle bir adet oluşturalım. Bunun için Azure Portal içerisinden "New" Butonua basılır,

Karşımıza gelen ekranda, Runbook > Quick Create tıklanarak, Runbook Name, Description, Automation Account gibi bilgiler belirtilir. Hemen alt kısımda dikkatimizi çekmesini istediğim nokta, "From Gallery" tıklanarak yukarıda bahsetmiş olduğumuz Runbook oluşturma adımlarının "Import From Gallery" buradan da gerçekleştirebilirisiniz.

100515_2128_AzureAutoma2.png

Create butonuna tıkladıktan sonra, "PeakUp – StartVM" adındaki Runbook oluşturma işlemini tamamlayalım.

100515_2128_AzureAutoma3.png

Azure Portal da Runbook oluşturma işlemi tamamlandıktan sonra, Automation Account içerisinden Runbook sekmesi içerisine gittiğimiz zaman artık Runbook içerisine Powershell Workflow yazabiliriz. İsteğe bağlı olarak yukarıda görüldüğü gibi "Edit Runbook" diyerek Runbook içerisine girebilir ve Powershell Workflow geliştirme sürecine başlayabilirsiniz. Şimdi Runbook aktivitesi içerisindeki sekmeleri sırasıyla ne iş yaptıklarını anlayalım.

Dashboard : Runbook içerisinden ulaştığımız bu sayfada görmek istediğiniz Runbook aktivitesi için özet görünüm sunar. Tarafımıza sunulan grafik isteğe bağlı olarak ekranın sağ üst köşesinden zaman aralığını belirtebilirsiniz. Bu gösterilen rapor içerisin de Runbook aktivitesinin "Queued, Failed, Stopped" gibi kavramlar göreceksiniz. Bu sayfayı lütfen Automation Account içerisinde anlattığımız Dashboard sayfası ile karıştırmayalım. Bu ekranda sadece seçtiğiniz Runbook aktivitesinin durumunu görmektesiniz.

Jobs : Seçilen Runbook aktivitesinin Schedule bir şekilde ayarlandıktan sonra çalışan tüm işlerin sonuçları liste halinde görmemizi sağlar. Bu sayfa içerisin Runbook aktivitesi çalıştıktan sonra işin durumunu ve detaylı bilgiyi buradan alabilirsiniz.

Author : Runbook içine girildiği (Author) kısmına "Draft" ve "Published" kavramları bizleri karşılıyor. Bu ekran içerisin de Powershell Workflow syntax yapısına uygun yazılan kod bloklarına "Draft" üzerinde Runbook Editor ile geliştirme yapılabilir veya geliştirilen Powershell Workflow sürecinin istenilirse Runbook Editör üzerinden "Test" işlemleri yapılmaktadır. Geliştirme süreci bittikten sonra, "Publish" tıklanarak ve yayınlanır. "Publish" edilmeden herhangi bir "Schedule" ataması gerçekleşemez. Herhangi bir Runbook "Publish" edildikten sonra, kod blokları içinde düzenlenme gerekir ise tekrar "Draft" bölümüne gelip değiştirilmesi gerekir.

Schedule : Bu kısımda Runbook için herhangi bir Schedule ataması gerçekleştirebiliriz. Assets kısmından Schedule tipinde bir değişken tanımlası yaptıysanız buradan link edebilir veya kendiniz bu sayfa içerisinden ilgili değişkeni oluşturup atamasını yapabilirsiniz.

Configure : Configure sekmesini kullanarak mevcut yapılandırmayı değiştirebilirsiniz. Bu sekme içerisin de Runbook özeline ait tüm ayarları yeniden yapılandırabilme şansımız var. Eğer dilerseniz, Runbook başlama ve bitişine kadar ayrıntılı Log detayları görme şansına sahipsiniz. Bunları görmek için, Configure sekmesi içerisinden "Log Verbose Records" ve "Log Progress Records" özelliklerini aktif hale getirmeniz gerekiyor. Akıllara hemen şu soru geliyor olabilir, Log ayrıntılarına nereden bakılabilir? Jobs içerisinden "History" sekmesi sizlere yardımcı olacaktır. Bununla beraber yine bu sekme içerisinden Runbook aktivitenize "Tag(Etiket)"atanabilir.

Runbook aktivitesi içinden "Author" sekmesine gelelim. Runbook Editör olarak adlandırdığımız sayfa bizleri karşılıyor olacak. Bu bölümde Powershell Workflow sürecinizi geliştirdiğiniz yer, Runbook aktivitesini geliştirme söz konusu iken kısa bir not düşelim. Tüm bu Runbook geliştirme süreçlerini Powershell ISE üzerinden geliştirsek çok da güzel olurdu düşünenleriniz olabilir. Kulağa hoş geliyor evet, böyle bir şansımız var. Github üzerinden indireceğiniz Add-on sayesinde dilerseniz Azure Automation için geliştireceğiniz Runbook aktivitelerini Powershell ISE ile yapmanız mümkün.

Bkz : https://github.com/azureautomation/azure-automation-ise-addon

100515_2128_AzureAutoma4.png

Dilerseniz geliştirdiğiniz Runbook aktivitesini nasıl Schedule hale getirebiliriz ondan bahsedelim. Runbook aktivitesi içerisinde geliştirme işlemleri bitti ve "Published" olarak ayarladınız ve gereken "Test" işlemleriniz hepsini yaptınız. Artık aktiviteniz hazır durumda, Schedule tabı içerisine gelip, Mevcut bir Schedule olarak tanımlanmış değişkeniniz var ise onu gösterebilir veya yeni oluşturarak Runbook aktivitesini Schedule edebilirsiniz.

100515_2128_AzureAutoma5.png

"Link to New Schedule" tıklayarak, yeni bir Schedule değişkeni yaratıp atamasını yapabilirsiniz. "Link to an Existing Schedule" ise Assets kısmında daha önceden yarattığınız veya başka bir Runbook için de kullandığınız Schedule değişkenini tekrar bu bölümde kullanabilirsiniz.

100515_2128_AzureAutoma6.png

Günlük, saatlik veya belirlediğiniz bir saatte çalışabilir. Dilerseniz Schedule için bir expire tarihi belirtme şansınızda var. "Complete" butonuna basıyorum ve Runbook aktivitemi Schedule edelim.

100515_2128_AzureAutoma7.png

· 3 min read

Yazımıza Powershell Class yapısı içerisinde Constructors ( Yapıcı Method) kullanımı ile devam ediyoruz. Makale serimizin birinci bölümünde bahsettiğimiz Constructors ( Yapıcı Method) yapısını Powershell içerisin de kullanımı göreceğiz.

Constructors yapısını anlamak için Makale Serimizin 1.bölümünde bulabilirsiniz. Birçok yazılım dilinde herhangi bir class'tan "new" anahtar sözcüğüyle yeni bir nesne oluşturulduğu anda çalışan metottur. Class'tan bir nesne oluştururken biz bunu "new" anahtar sözcüğü kullanarak yapmaktayız. Basit bir örnek verecek olursak; bizim Student adında bir class'ımız olduğunu varsayalım. Student Class'ından oluşturacağımız nesne "Student Std = new Student ();" şekilde kullanmaktayız. Buradan anladığıız her class için biz tanımlamasak da kesinlikle bir Constructor ( Yapıcı Method) vardır. İşte bu olaya varsayılan Constructor method olarak anılmaktadır.

Constructors yapısının özellikleri

  • Constructor oluşturulduğu zaman Class ismiyle aynı olmak zorundadır.
  • Constructor methodlar isteğe bağlı bir şekilde parametre alabilirler.
  • İstenilirse, bir class içerisinde birden fazla Constructor kullanılabilir. Herhangi bir sınır yoktur.

Neden Constructors kullanılır?

  • Constructor kullanarak oluşturulan objelere ilk değer atamaları yapabiliriz.
  • Class içerisine parametre haline getirerek objelere belli değerleri vermesi konusunda zorlanabilir.
  • Constructor ile obje oluşurken arka tarafta yapılacak isteğe bağlı işlemlerin uygulanması sağlanabilir.

Şimdi hemen "Employee" adında bir Powershell Class oluşturalım ve içerisinde "FirstName","LastName","Title","StartYear" objelerimizi yaratalım.

092315_1133_Powershell51.png

"Employee" adında class yaratıktan sonra, artık Class ismini [Employee] yazarak erişebilir durumdayız. Class içerisinden New methodunu çağırdığımız zaman arka tarafta Default Constructor devreye girerek objelerin yaratılmasını sağlayacaktır.

092315_1133_Powershell52.png

Class içerisinden objeleri Constructor sayesinde yaratıldı. Constructor içerisine hiçbir değer göndermedik. Kendi Constructors yazmaya sıra geldi. Burada önemli bir nokta var. Yazımızın başında belirttiğim gibi oluşturacağımız Constructor methodları Class adıyla aynı olmak zorundadır.

092315_1133_Powershell53.png

Class adı ve oluşturacağımız Constructor adını aynı yaptıktan sonra, parantez içerisinde bir "String" tipinden bir "$FirstName" adında değişkeni tanıtmış bulunuyorum. Bu değişken Constructor için bir parametre gönderebileceğimiz anlamına gelmektedir. Bu kısımda dikkatinizi çekmenizi istediğim bir nokta daha var. Süslü parantezler içerisinde "$this.FirstName" adında değişken kullanılmış ve bunun karşısına "$FirstName" atanmış durumdadır. Bu kısımdaki "$this" değişkeninin bizlere sağladığı özellik, Class içerisindeki nesnelere erişmemizi sağlıyor. Bu Constructor methodu kullandığımız zaman parametre olarak bizden "FirstName" isteyecektir. Bu değeri gönderdikten sonra Method içerisinde ne şekilde atamasını gerçekleştirdiysek obje yaratılması o şekilde olacaktır.

092315_1133_Powershell54.png

Yukarıda görüldüğü gibi [Employee]::New şeklinde yazıp çalıştırdığım zaman karşımıza Class içerisinde tanıtmış olduğumuz Constructor Methodumuz gelmiş durumdadır. Bununla beraber Constructor için tanımlamış olduğum "String" tipinde parametremi görüyorum. Açıklamamız gereken başka bir nokta ise, "Overload" kelimesi Türkçe olarak düşündüğümüz de "Aşırı Yük" anlamına denk geliyor. Herhangi bir class içerisin de aynı isimle Constructor var ise bunlar overload edilerek farklı parametreler ile birden fazla tanımlanabiliyor. Bazen Constructors aynı işi farklı parametreler ile yapabilirler.

Şimdi bunun kullanımı görelim.

092315_1133_Powershell55.png

[Employee]::New("Engin") olarak Constructor methodumu çalıştırdığım zaman gönderdiğim parametre sayesinde ilgili objeye ataması gerçekleşip obje yaratılmış durumdadır. Class içerisine yeni bir Constructor tanıtalım.

092315_1133_Powershell56.png

Tanımlamış olduğum Constructor'ları "[Employee]::New" yazarak methodları tekrar listeyelim.

092315_1133_Powershell57.png

Class içerisinde yazdığımız gibi tüm Constructors hepsini görüyorum ve farklı parametreler almaktalar. Şimdi Constructor çağıralım ve içerisinde iki adet parametre göndererek objemizin yaratılmasını sağlayalım.

092315_1133_Powershell58.png

Görüldüğü gibi, Constructor içerisine iki adet "String" tipinde parametre göndererek objelerimizin oluşturulmasını sağladık. Constructor yapısını Powershell Class içerisin de kullanımı inceledik.

· 3 min read

Yazımızın ikinci serisi ile devam ediyoruz. Class yapısını detaylı bir şekilde incelemeye devam edelim. Şimdi ise Class yapısı içerisin de Enum (Enumarator) kullanacağız fakat önce yapısından bahsedelim.

Enum (Enumaration) Nedir ?

Bu yapı yazılım dilinde enum, enumaration ya da enum sabitleri olarak adlandırılır. Değişkenlerin alabileceği değerlerin sabit (belli) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. Programda birçok değişkene tek tek sayısal değer vermek yerine "Enum" kullanılabilir. Özet olarak "enum" yapısı sayıları anlamlı şekilde isimlendirerek kullanabilmeye izin verir.

Bu yapıya her yazılım eğitimin de verilen örnek ile kolayca ilerleyelim. SehirPlakalari isimli Enum yapısı içerisinde birkaç sehir ve bunlara atanan sayısal değerler (Plaka Numarası) tanımlanabilir. Ben Istanbul'u çağırdığım zaman karşıma ilgili Plaka Numarasının gelmesini isteyebilirim. Enum yapısının içindeki tanımlamaları yaptıktan sonra Class yapısı içerisin de kullanmayı göreceğiz. Ama şimdi hemen Enum ( Enumaration) tanımlamasını yapalım.

Hatırlarsanız, Class tanımlarken keyword olarak" Class" kullanıyorduk. Enum ( Enumaration) tanımlarken keyword olarak "Enum" ve daha sonra EnumName şeklinde kullanacağınız.

Yukarıdaki örnek içerisin de SehirPlakaları adında bir Enum oluşturdum ve içerisine üyelerimi tanıttım. Şimdi artık yapmam gereken bu Enum listesi içerisinden istediğim değeri çağırarak çıkan sonucu görmek.

Enum yapısını çağırmak için, " [EnumAdı]::Name " şeklinde kullanmanız gerekiyor. Fakat bu şekilde çağırdığınız zaman ilgili seçilen karşınısındaki değere ( Örnek : Ankara seçtiğimiz zaman 6 değerinin gelmesini istiyoruz.) sahip olmanız için aşağıdaki şekilde kullanmanız gerekiyor.

Yukarıdaki örnek içerisin de [SehirPlakalari]::Ankara içerisindeki değere ulaşmak için Enum yapısı içerisindeki değeri çağırdık. "[SehirPlakalari]::Ankara.Value__" şeklinde değeri ekrana döndürdük. Şimdi Enum yapısını Class içerisinde kullanımına geçelim. Basit bir Araba adında Class oluşturacağım ve bunun için de Model, Manufacturer, Year ve Color gibi nesneler tanımlaması yapacağım. Daha sonrasında burada Color nesnesini sabit değer alabileceğini varsayıp Enum yapısına çevirelim.

Yukarıda görüldüğü gibi, Class tanımlamasını yaptık. Şimdi burada Color nesnesini Enum yapısına dahil edelim.

Class ve Enum detaylarını yukarıdaki gibi görebilirsiniz. Bu kısımda dikkatinizi çekmek istediğim bir nokta var, bir önceki resim de "Color" nesnesinin veri tipi "String" olarak tanımlanmış durumdaydı. Fakat ben bu nesneyi Enum yapısı içerisine alarak veri tipi kısmına tanımlamış olduğum Enum adını yazmış bulunuyoruz.

Şimdi kullanım şekline geçelim hemen, Aşağıdaki görüldüğü gibi Class yaratmak için New-Object Cmdlet kullanarak Class adını yazdım ve "A" isimli değişkene atamış durumdayım. "A" değişkenini çağırdığım zaman karşıma Class içerisindeki objeleri görmekteyim.

"A" değişkenini Color object içerisine değer atarken yukarıdaki dikkat ettiyseniz "1" yazmış bulunmaktayım. Bu rakam bana Enum içerisin de karşına tanımladığım değere denk gelmektedir. Enum içerisin de "1" değerinin karşına geldiği kısım "Red" değeri olduğu için, artık Class içerisindeki objeye içerisine "Red" ataması gerçekleşecektir.

Bununla beraber artık ilgili objeye Enum dışında tanımlanmış herhangi bir değer atama şansını bulunmuyor. Aşağıdaki örnekte Enum içerisinde olmayan bir değeri ilgili objeye atamaya çalıştığınız da aldığımız hatayı görebilirsiniz.

· 4 min read

Blog içerisinde Powershell v5.0 ile yeni gelen özellikleri paylaşmıştım. Eğer Windows 10 kullanıyorsanız, Powershell v5.0 sürümüne sahipsiniz demektir. Microsoft tarafından Powershell v5.0 için Windows Management Framework Production Preview sürümünü indirip, Windows 10 olmayan cihazlarınızda ilgili sürüme sahip olabilirsiniz.

Powershell v5.0 ile gelen hayatımıza, Desired State Configuration ciddi seviyede iyileştirmeler, Package Management ile deployment süreçlerinin inanılmaz sürelerde kısalması, Network Switch cmdlets ailesi sayesinde Microsoft sertifikalı switchleri yönetebilmek gibi birçok yenilik bizleri bekliyor. Bu yazımız da Powershell v5.0 ile gelen yeni özellik olan Nesne Yönelimli Programlama dillerin deki gibi Class yapılarını oluşturarak devam edeceğiz. Birçok PowerShell kullanıcıları bu kavramlara aşina olabilir. Class yapısının gelmesindeki en büyük avantaj Desired State Configuration tarafında olduğunu söyleyebiliriz.

Powershell'in artık Object Oriented Programming (Nesne Yönelimli Programlama) dil olduğunu üstüne basa basa söylemekte fayda var. Object Oriented Programming (Nesne Yönelimli Programlama) 1960 yılların başlarında geliştirilen bir programlama tekniğidir. Bu programlama tekniği bizlere ne sağlıyor? Bu programlama tekniği programı geliştirirken daha hızlı, daha esnek olması, bakımının ve diğer geliştirme yöntemlerine daha fazla açık olmasını anlamına gelmektedir. OOP (Object Oriented Programming) bütün olaylara birer Object(Nesne) olarak bakmaktadır.

Object ( Nesne ) Nedir?

OPP(Object Oriented Programming) avantajlarından bahsettik. Şimdi ise Object kavramını açıklayalım. Normal fiziksel nesne ile karıştırmamız gerekiyor. Fiziksel bir nesne dediğimiz zaman, uzayda yer kaplayan hacmi olan kütlesi olan bir yapıdır. Kodlama tekniklerinde bir nesne dendiği zaman olayları olan, olaylara karşı reaksiyon gösterebilen ve işlevi olan yapılar anlamına gelmektedir.

Object(Nesne) içerisin de Properties (Özellikler ), Methods (Method) ve Events(Olaylar) barındırırlar. Bunları kısaca açıklayalım.

  • Properties : Bir nesne tarafından temsil edilen veri özellikleridir.
  • Method : Objenin davranışlarını temsil eder.
  • Event : Nesne ile arasındaki iletişimi kurarlar.

Class (Sınıf) Nedir?

Object kavramından sonra, Class yapısını cover etmemiz gerekiyor. Peki Class nedir?

Nesne Yönelimli Programlama ile geliştireceğimiz programlarda sadece objeler vardır. Bu objeler, veri alışverişi yaparak, birbirleriyle haberleşirler. Objeler OOP(Object Oriented Programming) de sınıf olarak ifade edilen şablonlardan yaratılır. Her Class içinde, o Class içerisinden üretilecek objelerin özelikleri, davranışları tespit edilir. Örneğin Araba isminde bir sınıf yaratabiliriz. Bu sınıftan üretilecek objelerin ortak yani, bir Marka, Model ve Renk gibi özellikleri olacaktır. Class yapısı obje üretmenin yanında Class yapıları arasında ilişki kurmak mümkündür.

Constructor ( Yapıcı Method ) Nedir?

Objelerin sınıflardan yapıldığını öğrendik. Objeler üretilirken, sahip oldukları değişkenlerin farklı değerlerde olması gerekir. Araba örneğinde olduğu gibi, Marka ve Model isimli iki objenin değişik değerlere sahip olmaları gerekir. Bu demek oluyor ki, objeler üretilirken, onlara değişik kimlikler verecek bir mekanizmaya ihtiyacımız var. Bu görevi sınıf içinde Constructor üstlenir. Objeler Constructor aracılığıyla üretilir. Constructor bir obje üretmeden önce, obje için gerekli değişken değerleri belirlenir ve bu değerler parametre olarak Constructor gönderilir. Constructor bu değerleri kullanarak, objeyi üretir. Her sınıf içinde, obje üretmek için bir Constructor vardir. Bu kullanım şekline örnek verecek olursa, "System.Net.Http.HttpClient" class içerisinde 3 farklı Constructor görebilirsiniz; Diğer 2 tanesi parametre farklı değerler alırken sizde MSDN sayfası üzerinden görebileceğiniz gibi bir tanesi hiçbir parametre almaz. Constructor "overloading" yapısını desteklemekte. Bu şekilde birçok Constructor yaratılabilmekteyiz.

Genel anlamlarıyla Class, Object, Properties, Method gibi kavramları açıkladık. Şimdi Powershell içerisinden Class oluşturmak için neler yapmamız gerekiyor onlardan bahsedelim. Yapmamız gereken bu kısımda aynı Powershell içerisin de function veya Workflow yazar gibi Class keyword ile başlayıp ClassName belirtmeniz gerekiyor.

Yukarıdaki örnekte görüldüğü gibi Powershell içerisin de herhangi bir Function, Workflow veya Configuration elementleri ile başladığımız gibi keyword olarak Class yazarak ve ClassName belirterek oluşturma işlemini gerçekleştiriyorum.

Şimdi ise Class içerisine "String","Int" ve "DateTime" tipinde objeler tanımladım. Artık bu Class çağırıldığı zaman bunlar benim için birer objedir. Class çağırmak için neler yapmam gerekiyor hemen ondan bahsedelim. Bu kısımda karşımıza "New-Object" adında bir cmdlet çıkıyor. Bu cmdlet içerisine Class Adını göndererek kullanabileceğim.

"A" adında bir değişken oluşturdum ve karşına New-Object ClassName şeklinde atayıp çalıştırdım. Daha sonra "A" değişkenine çağırdığım zaman karşımıza Class içerisin de tanımladığım objelerim gelmektedir. Şimdi Bu objeler içerisine değer atama işlemlerine bakalım.

Yukarıda görüldüğü gibi Class içerisinde tanımlamış olduğum objelerime değer atayıp çalıştırdıktan sonra, Class içerisindeki objelerin yeni değerlerini görebilir durumdayım. Bir sonraki yazımızda Class yapısını incelemeye devam edeceğiz.

· 2 min read

Yazımızın ilk bölümünde Powershell içerisinden PowerBI içerisine erişebilmek için ilgili modülü kurulumu ve bu modül ile gelen cmdlet detaylarını inceledik. Şimdi ise, Powershell içerisinden aldığımız sonuçları PowerBI üzerindeki dashboard içerisinde anlık olarak gönderebilmemiz için bir PowerBI hesabına ihtiyacımız bulunuyor. Hesap bilgileri ile alınan Token sayesinde PowerBI REST API'dan faydalanıp erişimi gerçekleştirebileceğiz.

Powershell ile PowerBI Authentication işlemleri

PowerBI API kullanıcının kimliğini doğrulamak için Azure Active Directory ve OAuth 2.0 kullanır. Power BI client app sayesinde kimlik doğrulama işlemini gerçekleştirebiliriz. PowerBI REST API faydalanabilmek için Azure Active Directory üzerinden authentication işlemlerini gerçekleştirmemiz gerekiyor. Azure Active Directory tarafında PowerBI Client app tanıtıp, gerekli kullanıcılara izin verdikten sonra, ClientId ve Token sayesinde Power BI REST API kullanmaya başlayabiliriz.

Register Power BI Client App

Programlama dillerini (c#, powershell ve diğer) kullanarak PowerBI REST API faydalanmak için Azure Active Directory içerisinden Application eklememiz gerekiyor. Azure Management Portal içerisinden Azure Active Directory tabı içerisine gidelim ve uygulamamızı ekleyelim.

072715_1904_Powershelli1.png

Azure Active Directory tabına geldiğimiz zaman hizmet aldığımız dizin hizmetlerini görmektesiniz. Benim şuna sadece mevcut dizin hizmetimden faydanalacağım. Eğer birden fazla dizin hizmeti alıyorsanız istediğinizi seçebilirsiniz. Azure Active Directory girdikten sonra, Application tabında gelip eklemeye başlayalım.

072715_1904_Powershelli2.png

"Add" butonuna basıktan sonra bu kısımda "Add an application my organization is developing" kısmını seçip "Native Client Application" seçiyoruz. Application bir isim veriyoruz. Ben "PowerBIApp" olarak girdim.

072715_1904_Powershelli3.png

"Native Client Application" seçtikten sonra, bir sonraki adımda karşımıza "Redirect URI" ekranı gelecektir. Bu kısımda dikkat etmemiz gereken yer URI adresinin doğru olmasıdır. Bu sayede authentication işlemleri gerçekleşecektir. 072715_1904_Powershelli4.png

"Redirect URI" ekranında "Azure Active Directory" ile "Oauth 2.0" kullanarak authentication işlemlerini yapabilmemiz için girmemiz gereken adres;

Redirect URI : https://login.windows.net/common/oauth2/authorize

Diğer yöntemler için tıklayınız. Gereken bilgileri doldurduktan sonra "Complete" butonuna basıp Client App ekleme işlemini bitiyoruz.

· 2 min read

Yazımızın ikinci bölümünde Native Application olarak PowerBI Client App işlemlerini gerçekleştirdik. Uygulama eklendiği zaman Azure Management Portal üzerinden aşağıdaki şekilde görmemiz gerekiyor.

072715_1949_Powershelli1.png

"Redirect URI", "ClientId" yukarıdaki gibi görmekteyim. Artık yapmamız gereken bu uygulama için Azure Active Directory içerisindeki hesapların erişebilmesi için gereken yetkileri vermemiz gerekiyor.

072715_1949_Powershelli2.png Eklemiş olduğumuz PowerBI Application içerisinde girip , "Configure" tabına geldiğiniz zaman alt kısımda "Permission" ekranı içerisinden "Add Application butonuna basıyoruz ve bu kısımda alınan token sayesinde yapılacak işlemler için PowerBI tarafı için izin veriyoruz. 072715_1949_Powershelli3.png "PowerBI Service" seçtikten sonra "Complete butonuna basıyoruz ve uygulama için gereken delegation izinlerimizi verelim. 072715_1949_Powershelli4.png

"Delegated Permission", PowerBI Servisi için Azure Active Directory servisi üzerinde bir kullanıcı PowerBI üyeliğini aldıktan sonra, eğer herhangi bir programlama dilinden PowerBI REST API kullanarak erişirse verdiğimiz bu yetkiler doğrultusunda işlemleri yapabilecek.

Şimdi ise artık Azure Active Directory içerisinde yeni bir kullanıcı oluşturup, bu kullanıcı ile bir PowerBI hesabı alma işlemlerini sırasıyla gerçekleştirelim. Azure Management Portal içerisinden, Azure Active Directory tabına gelip daha sonra "Add User" butonuna basıktan sonra, yeni bir kullanıcıyı PowerBI Client App register ettiğimiz dizin hizmetinin altında yaratıyoruz.

072715_1949_Powershelli5.png

Eklemiş olduğumuz hesabı artık Azure Active Directory içerisinde Users tabı altına göremem gerekiyor. Kullanıcı yaratırken bana verilen şifre ile PowerBI üzerinde kayıt olma işlemlerini gerçekleştirelim. PowerBI hesabı oluşturmak için, https://powerbi.microsoft.com adresine girdikten sonra, Azure Active Directory içerisinde oluşturduğumuz hesabımızı yazarak ücretsiz bir şekilde PowerBI hesabını aktif hale getirebiliriz.

072715_1949_Powershelli6.pngÜcretisiz bir şekilde PowerBI üyeliğini artık aldık ve "Sign in" kısmından oturum açabiliriz. PowerBI portalında oturum açtığım zaman, "Dashboard, Report ve Data Set" alanları görmekteyim. Yazımız içerisinde PowerBI derinlemesine inceleme şansımız fazla olmasada, "Veri Al" butonunu tıklayarak kullanabileceğiniz hizmetleri görmeniz açısından bir fikir sahibi olabilirsiniz. 072715_1949_Powershelli7.png

· 3 min read

Artık Powershell ile PowerBI REST API kullanmak için ClientId ve Token alma işlemlerini gerçekleştirebiliriz. PowerBIPS ( PowerBI Powershell Modül) içerisindeki "Get-PBIAuthToken" cmdlet bizlere authentication için yardımcı olup ilgili token almamızı sağlayacaktır.

072715_1958_Powershelli1.pngPowerBI ile üyelik aldığımız kullanıcı adı ve şifresini girerek token alma işlemini gerçekleştirelim. Eğer "Get-PBIAuthToken" komutunu direk çalıştırırsanız sizi "Sign-in" sayfasına gönderecek ve o kısımda gereken kullanıcı ve şifre bilgilerini doldurup token alma işlemini tamamlayabiliriz.

072715_1958_Powershelli2.pngHatırlarsanız, yazımızın ikinci bölümünde PowerBI Powershell modulü ile ilgili cmdlet açıklamalarını görebilirsiniz. Powershell ile herhangi bir cmdlet ile aldığımız sonuçlarımızı Json formatında göndermemiz gerekiyor ve aldığımız cevaplar yine JSON formatında geliyor. Tüm aradaki iletişim HTTP methodları ile sağlanıyor.Bu sayede anlık olarak veri kümeleri oluşturup, Dashboard yaratıp anlık olarak her yerden erişebilme şansımız bulunmaktadır.

Microsoft'un sunduğu şu sayfayı kullanarak, PowerBI REST API ile aklınıza takılan herşeyi test edebilirsiniz.

http://docs.powerbi.apiary.io/#

Şimdi Powershell üzerinden aldığımız bi sonucu PowerBI içerisine gönderelim. Başlangıç olarak "Get-Process" ile başlayalım. "Get-Process" çıkan sutünlardan sadece Process Adı ve Kullanılan Memory bilgisini getirelim ve çıkan sonuçtan, ilk 5 Process bilgilerini gösterelim.

# Bilgisayarınızda çalışan en fazla memory kullanan ilk 5 process Get-Process | Sort WS -Descending | Select-Object Name,WS -First 5

072715_1958_Powershelli3.pngYukarıdaki "Get-Process" cmdlet sayesinde karşımıza listelenen Process Bilgilerini pipeline sürecine dahil ettikten sonra, Sort ve Select komutları ile istediğimiz sonucu elde ediyoruz. Artık yapmamız gereken sadece karşımıza gelen verileri PowerBI içerisine göndermek.

PowerBI Modülü içerisinde bulunan Out-PowerBI cmdlet sayesinde, PowerBI içerisinden aldığımız sonuçları, arka tarafta JSON formatına dönüştürüp ve veri kümesi (DataSets) olarak gönderebiliyor. Bu cmdlet bizim işimizi oldukça kolaylaştırıyor. JSON formatını hazırlamanıza gerek kalmadan gelen veriyi kendisini dönüştürüp veri kümesi(DataSet) ve tabloyu yaratabiliyor.

Kullanımını hemen inceleyelim.

# Out-PowerBI cmdlet ile beraber PowerBI içerisine gönderme Get-Process | Sort WS -Descending | Select-Object Name,WS -First 5 | Out-PowerBI -Verbose

072715_1958_Powershelli4.pngYukarıda yazdığımız satırda "Get-Process" ile alınan sonuçlar pipeline süreci ile "Out-PowerBI" cmdlet içerisine gönderiyor. Cmdlet kullanırken "–Verbose" parametresini aktif hale getirerek çalışırken detayları görmek açısından oldukça faydalıdır. "Out-PowerBI" yazımızın başında aldığımız token(Get-PBIAuthToken) kullanarak, "Get-Process" cmdlet içerisinden gelen veriler için bir veri kümesi(dateset) ve bu veri kümelerinin içinde tablo(table) oluşturma işlemini gerçekleştirip, verileri ekliyor.

072715_1958_Powershelli5.pngPowerBI sayfası üzerinden baktığım zaman, "Veri Kümeleri(DataSets)" altında "PowerBIPS_20150519" adında başlayan yeni bir veri kümesi eklendiğini görmekteyim. Veri kümesinin(DataSet) adını komut satırını çalıştırdığınız yerel bilgisayardaki tarih ve saat bilgilerini alarak belirlemektedir.

"Out-PowerBI" içerisine parametreler göndererek, Dataset ve TableName değerlerini biz belirtme şansımız var.

# Out-PowerBI cmdlet ile beraber PowerBI içerisine gönderme

$ProcessTable = Get-Process | Sort WS -Descending | Select-Object Name,WS -First 5

Out-PowerBI içerisine data,DateSetName ve TableName parametlerini kullanımı

Out-PowerBI -data $ProcessTable -dataSetName "processDataSet" -tableName "processTable" -Verbose

072715_1958_Powershelli6.pngYukarıdaki örnekte ise, "Get-Process" kullanarak Sort ve Select yaptıktan sonra sonucu bir "ProcessTable" adında bir değişkene atadık. Bu değişkeni daha sonra, "Out-PowerBI" içerisinde "-data" parametresi içerisine gönderdim. Bu kısımda "-datasetName" ve "tableName" parametlerine belirtmek istediğimiz veri kümesi ve tablo adını yazmış bulunmaktayım. İlgili satırları çalıştırdıktan sonra, PowerBI tarafında oluşan veri kümesine bir göz gezdirelim.

072715_1958_Powershelli7.pngPowerBI arayüzden Veri Kümeleri kısmına baktığım zaman "Out-PowerBI" içerisine göndermiş olduğumuz parametre değerleri ile veri kümesi ismini almış gözükmektedir. Serimizin diğer yazısında Veri kümelerini kullanıp, DashBoard yaratma süreçlerine bakıyor olacağız.