Searching for files and sending notifications with Powershell

 PowerShell komut satırı kabuğu, betik dili ve yapılandırma yönetimi çerçevesinden oluşan platformlar arası bir görev otomasyonu çözümüdür. PowerShell, Windows, Linux ve macOS üzerinde çalışır. Powershell çok güçlü bir otomasyon olduğu için, işlerinizi kolaylaştırabilirsiniz.

Bu betik bilgisayar üzerindeki saati günlük çeker ve belirlediğiniz klasör yoluna gider. Bu yol üzerinde betikte belirtilen isimli dosya veya klasörleri arayıp varlığını kontrol eder. Dosya isimleri günlük değiştiği için değişken ile birleştirilir ve 8 adet dosya olduğu için numaralandırılır. En son aşamada var olan dosyaları ve var olmayanları size mail veya slack üzerinden bildirim gönderir.

  Bu tür işlemler yapmadan, powershell dosyasının içeriğini okuyun ve çok dikkatli olun.

# Bu betik günlük olarak belirlediğiniz dosya veya klasörleri arayıp varlığını kontrol edip mail veya slack üzerinden bildirim gönderir.
# Aşağıdaki alanları doldurmanız gerekmektedir.
# $file kısmına klasör veya UNC path giriniz. (Dosya adı günlük değiştiği için tarih değişkeni ile birleştirme işlemi yapılmıştır.)
# Slack ve E-Maıl bilgi kısımlarını doldurunuz.
# <h2> ve text kısımları gibi yerleri yazınız.
# While ile kaç adet döngüye gireceğini belirleyin. Örnek 8 adet.

$tarih = Get-Date -Format "yyyy_MM_dd"

$a = 1 

$dosya = ""

DO

{

 $file = "\\ip_adresss\path\FONETHBS_"+$tarih+"_1800_0"+$a+".DMP"

 $items = Get-ChildItem $file

    if ($items) {

        $dosya1 = "<p style='background-color:MediumSeaGreen;'>Bu dosya Mevcut : " + $file +"</p>"

    } else {

        $dosya1 = "<p style='background-color:Tomato;'>Bu Dosya Yok : " + $file  +"</p>"

    }


 $a++

 $dosya= $dosya + $dosya1

} While ($a -le 8)



$body1 = ConvertTo-Html -PreContent @"
 <h2>Dosya Kontrol</h2>
<div>
    $dosya 
 </div>
"@


   # SlackWebhook URL bilgilerini giriniz.

    $uriSlack = "https://hooks.slack.com/services/T04L2K57F61323EE/B07J486EDDU7J/dk111MMoeMOrrs"
    $body = ConvertTo-Json @{
        pretext = "Dosya Kontrol"
        text = "Yedekler Gelmedi."
        color = "#142954"
    }

    try {
        Invoke-RestMethod -uri $uriSlack -Method Post -body $body -ContentType 'application/json' | Out-Null
    } catch {
 
        Write-Error (Get-Date) ": Update to Slack went wrong..."

        Invoke-WebRequest -Method Post -Uri $Url -Body $body
    }


    #e-posta kullanıcı bilgilerini giriniz.

    #Setup Credentials
    $UserName = "x@gmail.com"
    $Password = "tfzd syfy hasacu dlp13u" # (Gmail kullanılacak ise uygulama parolası oluşturunuz. Diğer kılavuzlara bakılarak bu işlem gerçekleştirilebilir.)
    $SecurePassword = ConvertTo-SecureString -string $password -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential -argumentlist $UserName, $SecurePassword
 
    #Set Parameters for the Email
    $EmailParams = @{
        From = "x@gmail.com"
        To = "x@gmail.com"
        Subject = "Database Backup"
        Body = $body1 | Out-String
        BodyAsHtml = $True
        #Cc= "" #Başka birilerini CC ye eklemek isterseniz buraya yazabilirsiniz.
        SmtpServer = "smtp.gmail.com"
        Port = 587
        UseSsl = $true
        Credential = $Cred
    }
 
    #Call the Send-MailMessage to Send Email
    Send-MailMessage @EmailParams

İşlemin başarılı olduğunu kontrol etmek için, script dosyasını çalıştırın ve maili kontrol edin. Eğer her şey istediğiniz gibiyse, script dosyasını Windows üzerinde Task Scheduler ekleyerek bu işlemleri düzenli olarak yaptırabilirsiniz.

Powershell Task Scheduler hakkında daha fazla bilgi almak için diğer kılavuzlara bakınız.

Blog'a Dön