1. Ana Sayfa
  2. Microsoft PowerShell
  3. Powershell ile Pratik Çözümler Bölüm 1: Powershell ile SMS Gateway Kullanımı

Powershell ile Pratik Çözümler Bölüm 1: Powershell ile SMS Gateway Kullanımı

103018_2128_Powershelli4.png

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 .

İ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 Kullanımı

Bölüm 2: Powershell ile 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:

Bu işlemi Powershell ile gerçekleştirmek için iki gereksinimimiz mevcut.

  1. Active Directory modülü kullanılarak kullanıcı bilgilerinin alınması
  2. Kullanılacak SMS Gateway sağlayacısının web servis kullanımı için ve ya 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.

  1. 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
-LDAPFilter
“(&(objectClass=user)(sAMAccountName=test*))”

Get-ADUser
-Filter {SamAccountName
-like
“test*”}

Get-ADUser
-Filter
*
|
Where-Object {$_.SamAccountName -like
“test*”}

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.

  1. 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
=
“test”;

$users
=
Get-ADUser
-LDAPFilter
“(&(objectClass=user)(sAMAccountName=$samAccountName))”
-Properties
mobile

foreach($user
in
$users)

{

if($user.mobile -ne $null)

{

$passLength
=
6

$password
=
$null

for($i=1;$i -le $passLength;$i++)

{

$number
=
Get-Random
-Minimum
65
-Maximum
90

$letter
=
[char]$number

if($i%2 -eq
0)

{

$letter
=
$letter.ToString().ToLower()

$password
+=
$letter

}

if($i%2 -ne
0)

{

$password
+=
$letter

}

}

for($i=1;$i -le
2;$i++)

{

$number
=
Get-Random
-Minimum
48
-Maximum
57

$letter
=
[char]$number

$password
+=
$letter

}

            $password

$pwd
=
ConvertTo-SecureString
-String
$password
-AsPlainText
–Force

Set-ADAccountPassword $($user.SamAccountName) -NewPassword $pwd
-Reset

$user.SamAccountName

$user.mobile

$password

$uri
=
“http://soap.netgsm.com.tr:8080/Sms_webservis/SMS?wsdl”

$Proxy
=
New-WebserviceProxy
$URI
–Namespace
X

$Proxy.smsGonder1NV2(“KullanıcıAdı”,

“Şifre”,

“Başlık”
,

“Kullanici Adi : $($user.SamAccountName) nŞifre : $($password) nnn”
,

@($($user.mobile)),

“TR”,

“”,

“”,

“”,

0

)

}

else

{

Write-Host
Telefon
yok $($user.SamAccountName)

}

}

}

catch

{

$ErrorMessage
=
$_.Exception.Message

Write-Host
$ErrorMessage
-ForegroundColor
Red

Break

}

Telefona gelen Kullanıcı-Şifre bilgisi mesaj ekranı.

Resim-7

Umarız ki bu yazıda paylaşmış olduğumuz bilgiler, 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

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ı

Yorum Yap

Yazar Hakkında

Burak Bingöl, Sakarya Üniversitesi Bilgisayar Mühendisliği mezunudur. 2014 yılından bu yana profesyonel olarak IT sektöründe çalışmaktadır. Halen Netaş'ta Sistem Mühendisi ve Süreç Yönetim Uzmanı olarak görev almaktadır. Genelde Powershell üzerine uzmanlaşmakla beraber, Otomasyon ve Süreç Yönetim araçlarıyla da ilgilenmektedir.

Yorum Yap