“Powershell zamanınızı kurtarır.” Evet, yazılarıma bu cümle ile başlamam uygun olacaktır. Projelerde çoğu zaman hayat kurtaran bazen kolaylaştıran bazen ise güldüren bir çözümdür Powershell.
İlk olarak bu yazı dizisinde sizlere nelerden bahsedeceğiz ve neleri öğreneceğiz, madde madde toplamaya çalıştık.
Bölüm 1: Powershell ile Active Directory ve SMS Gateway Kullanımı
Bölüm 2: Powershell ile PowerCLI Komutları Kullanılarak VMWare Disk Özet Raporu
Bölüm 3: Powershell ile Active Directory Şifre Süresi Dolan Kullanıcı Bilgilendirmesi
Bölüm 4: Powershell ile Microfocus OBM (eski adı ile OMi) Entegrasyonu ile Alarm Oluşturma ve Güncelleme Nasıl Gerçekleştirilir?
Bu makale dizisinde yukarıda yer verdiğimiz maddelerin Powershell ile nasıl gerçekleştirileceğini dilimizin döndüğünce anlatmaya çalışacağız. İsterseniz zaman kaybetmeden başlayalım.
NOT: Yazıyı okumadan önce temel düzeyde Powershell bilginizin olduğunu varsayıyoruz.
Bölüm 1: Powershell ile SMS Gateway kullanımı
Bu işlemi Powershell ile gerçekleştirmek için iki gereksinimimiz mevcut.
- Active Directory modülü kullanılarak kullanıcı bilgilerinin alınması
- Kullanılacak SMS Gateway sağlayacısının web servis kullanımı için xml ve ya json isteği formatı
Ön bilgi olarak hemen hemen tüm SMS sağlayıcılarının bir API desteğinin olduğu unutulmamalıdır. Biz birçok projemizde buna ihtiyaç duyduk ve gerçekleştirmek için Powershell kullandık. Kullanım olarak basit bir çözüm olmasıyla birlikte eğer isterlere hemen ulaşabilirseniz 15 dakikada çözümü uygulayabilirsiniz.
- Active Directory modülü kullanılarak kullanıcı bilgilerinin alınması
Bu aşamada herhangi bir sunucu üzerinden ya da kendi bilgisayarınız üzerinden bu bilgileri alabilirsiniz. Eğer kendi bilgisayarınız üzerinden çalışacaksanız ihtiyacınız olan RSAT ın ya da sunucunuz üzerinde AD powershell için özelliklerin yüklü olmasıdır.
Bilgisayarınıza RSAT kurulumu için Microsoft Support ta bulunan aşağıdaki linkteki makaleyi kullanabilirsiniz. Resim-1‘ deki gibi ihtiyacınız olan bilgileri karşılıyor.
Resim 1
Sunucu üzerinden gerçekleştimek isterseniz aşağıdaki Resim-2 ‘deki gibi “Add Roles and Features Wizard” ile yüklü olan özellikleri kendi sunucunuza yüklemeniz yeterli olacaktır.
Resim-2
Şimdi projemizin ilk aşamasını yazabiliriz. Bizim SMS gönderimi için tek bir bilgiye ihtiyacımız bulunuyor. “Hangi kullanıcıya gönderileceği ?”
Biz projemizde tüm kullanıcılara şifre gönderdiğimiz için aslında ufak bir filtreyle bu işi halledebildik ancak burada farklı filtreleri de nasıl oluşturduğumuzun örneklerine yer verdik. Öncelikle AD modülü üzerinde bulunan ve kullanıcıların bilgilerinin çekilmesini sağlayan “Get-ADUser” komutunu kullanacağız. Aşağıda üç farklı kullanım yönetimi mevcut. Komutun çıktısı “SamAccountName” değerinin “test” ile başlayan kullanıcıları geri döndürecektir.
Get-ADUser |
Get-ADUser |
Get-ADUser |
Resim-3‘ te üç komutun toplam ne kadar sürede değer döndürdüğünü görüyoruz. Buradan da anlaşılacağı üzere eğer çok kullanıcılı bir sisteme sahipseniz ve aynı anda tüm kullanıcılara ya sicil numarası 100* ile başlayan tüm kullanıcıların bilgilerini çekip mesaj göndermek isterseniz ilk komutu ekran görüntüsündeki son komutu yani “-LDAPFilter” parametresi ile kullanılan komutu kullanmanız daha yararınıza olacaktır.
Resim-3
Şimdi kullanıcı bilgilerini çekerken cep telefon numaralarını da gelen değerlere ekleyelim. Bunun için “Get-ADUser” komutunun “-Properties” parametresine değer veriyoruz. “MobilePhone” parametresinde bu değer mevcut. Tabi örnekteki telefon numaraları test sistemi olduğu için yanlış ???? (Resim-4)
Resim-4
İlk adımı bu şekilde tamamlamış oluyoruz artık elimizde kimlere mesaj göndereceğiz bilgisi mevcut.
- Kullanılacak SMS Gateway sağlayacısının web servis kullanımı için xml ve ya json isteği formatı
Biz bu işi hem JSON formatında hem de XML formatında gerçekleştirdik. Örnek olarak NetGSM in SMS gönderimi sağladığı web servisi JSON isteği ile sağlayacağız. Diğer SMS hizmeti sağlayan firmalar için de yine kendi web sayfaları üzerinden bu bilgiye ulaşabilirsiniz.
Bu aşama için “New-WebServiceProxy” komutunu kullanacağız. Bu komut sizin Powershell üzerinden herhangi bir web servis sağlayıcıya istek(request) göndermek amacıyla kullanabileceğiniz bir komuttur ve yalnızca “-Uri” parametresi zorunlu alanıdır. Resim-5‘ te web servis adresinin fonksiyonlarını çekmek için bir proxy oluşturuyoruz. Artık “Get-Member” fonksiyonu ile bu proxy üzerinden web servisimizin tüm method ve izin verilen değişkenlerine ulaşabiliriz.
Resim-5
Şimdi bu bilgiler ışığında; bir senaryo üzerinden kodumuzu yazalım ve çalıştıralım. Senaryomuz şu şekilde; belirli bir kullanıcıya rastgele bir şifre üretilecek ve bu şifre kullanıcıya kullanıcı adı ile birlikte mesaj olarak gönderilecek.
İlk adım olarak geliştirmeyi yapacağımız Powershell ISE ortamını açıyoruz ve AD şifre gereksinimlerini karşılayacak rastgele bir şifre oluşturmak için kodumuzu oluşturuyoruz. Resim-6‘ da basitçe hazırlanmış bir rastgele şifre oluşturmayı sağlayan Powershell kodu mevcut.
Resim-6
Burada ilk 6 karakteri büyük ve küçük harf içeren, son 2 karakteri ise rakamlardan oluşacak şekilde bir şifre oluşturma kod parçacığı yazdık. “Get-Random” fonksiyonu ile ASCII karakter tablosu içerisinden rakam ve harflerinin değerlerine göre rastgele sayılar oluşturduk daha sonra bu sayıları ASCII karakter tablosundaki değerlerini alıp $password değişkenine atadık.
Aşağıda kodun tamamı mevcut yalnızca yukarıdakileri kullanarak kendi SMS gönderme fonksiyonunuzu yazabilir, belki modül haline getirebilir ve otomasyon uygulamalarınızda kullanabilirsiniz. Aşağıdaki kod bloğu içerisinde belirli bir kullanıcının yukarıda belirtildiği gibi bilgileri çekiliyor ve bu kullanıcıya kullanıcı adı ve rastgele oluşturulmuş şifresi mesaj olarak gönderiliyor.
try { $samAccountName $users foreach($user { if($user.mobile -ne $null) { $passLength $password for($i=1;$i -le $passLength;$i++) { $number $letter if($i%2 -eq { $letter $password } if($i%2 -ne { $password } } for($i=1;$i -le { $number $letter $password } $password $pwd Set-ADAccountPassword $($user.SamAccountName) -NewPassword $pwd $user.SamAccountName $user.mobile $password $uri $Proxy $Proxy.smsGonder1NV2(“KullanıcıAdı”, “Şifre”, “Başlık” “Kullanici Adi : $($user.SamAccountName) `nŞifre : $($password) `n`n`n” @(“$($user.mobile)“), “TR”, “”, “”, “”, 0 ) } else { Write-Host } } } catch { $ErrorMessage Write-Host Break } |
Telefona gelen Kullanıcı-Şifre bilgisi mesaj ekranı.
Resim-7
Umarız ki bu yazıda paylaşmış olduğumuz bilgiler, Powershell ile pratik çözümler bulma yolunda sizlere ışık tutmuştur. Bir sonraki yazımızda sizlere; Powershell ile PowerCLI Komutları Kullanılarak VMWare Disk Özet Raporu nasıl hazırlanır? Konusundan bahsedeceğiz.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://support.microsoft.com/tr-tr
TAGs:Powershell ile pratik çözümler,Powershell ile SMS Gateway Kullanımı,Powershell,SMS Gateway,JSON,XML,Powershell ISE,PowerCLI Komutları