Powershell ile IIS Application Pool Kontrolü ve Telegram’a Alert Gönderilmesi

tarihinde yayınlandı.

Merhaba, bu yazıda Powershell ile IIS’de yer alan tüm Application Pool’ların durumunu check edip eğer Stop durumdaysa Start duruma geçmesini sağlamak ve oluşan bu durumu Telegram aracılığı ile alert olarak gönderilmesinden bahsedeceğim.

Bunun için ihtiyacımız olan şeyler;

  1. IIS
  2. Powershell
  3. Admin Account
  4. Telegram Bot/Botları
  5. Telegram Kanalı veya Grubu

BotFather ile Telegram Bot’u hazırlamak için şu linkte yer alan dökümana göz gezdirebilirsiniz. Detaylı olarak anlatılmış durumda. Daha sonrasında oluşturduğumuz botu Telegram kanalı veya grubuna ekliyoruz. Son olarak da kanal veya grubumuzun Chat ID’sini öğrenmek için MyIDBot adlı bot’u ekliyoruz. Bununla alakalı dökümana da şu linkten ulaşabilirsiniz.

Önemli Not: Script dosyasını ilgili makinede (local veya remote) admin olarak run etmemiz gerekiyor.

Şimdi, asıl işi yapacak olan Powershell scriptinin çalışma mantığını açıklayalım,

  • Net.ServicePointManager kod satırı, scriptimizin TLS1.2 protokolünü kullanarak çalışmasını sağlıyor. Bunun nedeni ise, Telegram API’nin sadece TLS1.2 protokülünü kullanarak handshake yapması.
  • IIS yönetimi için WebAdministrator modülünü import ediyoruz.
  • Set-Location ile IIS Application Pool configlerinin yer aldığını dizine gidiyoruz ve $ApplicationPools adında bir değişken yaratıp, bu dizinde dir komutu ile listeleme yapıyoruz.
  • Daha sonra foreach ile her bir Application Pool’u $item değişkenine atıyoruz. Böylelikle IIS’de yer alan tüm Application Pool’ların durumlarını tek tek check etmiş oluyoruz.
  • $botToken ve $chatID kısımlarına, 2 bot üzerinden aldığımız bilgileri giriyoruz. (BotFather ve MyIDBot)
  • Ardından if ve try-catch bloklarını kullanarak, eğer Application Pool’lardan bir tanesinin durumu Started değilse, Started durumuna getirilmesini sağlıyoruz. Ve Telegram’da yer alan kanal veya gruba ApplicationPool Started! başlıklı alert gönderilmesini sağlamış oluyoruz.
  • Herhangi olası bir durumda Application Pool Start edilemezse catch bloğuna düşüp, ApplicationPool NOT Started! başlıklı alert gönderilmesi sağlanmış oluyor.

Örnek Telegram Alert Görseli,

Eğer bu scripti, domain ortamındaki birçok makinede remote olarak çalıştırmak istiyorsanız, aşağıdaki komutla scripti call etmeniz yeterli olacaktır.

Umarım faydalı bir konu olmuştur. Bir sonraki yazıda görüşmek üzere…

Sosyal Medyada Paylaşın