İçindekiler

    Yazıyı Dinle

    Hazır
    Tarayıcınızın yerleşik ses sentezi özelliğini kullanır.

    Yazı Boyutu

    Küçük Aa
    Normal Aa
    Büyük Aa
    Çok Büyük Aa

    Kaydet

    📑

    Bu makaleyi daha sonra okumak için kaydedin

    Active Directory'de şifre süreleri dolmadan kullanıcıları otomatik olarak uyaran PowerShell scripti

    Active Directory'de şifre süreleri dolmadan kullanıcıları otomatik olarak uyaran PowerShell scripti
    Yazıyı dinlemek için oynat butonuna tıklayın
    Active Directory'de şifre süreleri dolmadan kullanıcıları otomatik olarak uyaran bir PowerShell script Bu script şunları yapar:
    1. Active Directory'den şifresi dolmak üzere olan kullanıcıları tespit eder
    2. Şifresi belirli gün aralıklarında (14, 7, 3, 1 gün) dolacak kullanıcılara özelleştirilmiş e-posta gönderir
    3. Tüm işlemleri günlük dosyasına (log) kaydeder
    4. HTML formatında profesyonel bir e-posta şablonu kullanır
    Kullanmadan önce aşağıdaki değişkenleri kendi ortamınıza göre ayarlamanız gerekir:
    • $smtpServer - SMTP sunucu adresiniz
    • $smtpPort - SMTP port numarası
    • $smtpFrom - Gönderen e-posta adresi
    • $domain - Şirket domain adınız
    • Şifre politikası bilgilerini güncelleyin (HTML içindeki listeyi)
    Bu script'i Windows Görev Zamanlayıcı'da günlük olarak çalışacak şekilde aşağıdaki şekilde ayarlayabilirsiniz:
    1. PowerShell script'i .ps1 uzantısıyla kaydedin
    2. Görev Zamanlayıcı'yı açın ve yeni bir görev oluşturun
    3. Program/script olarak powershell.exe yazın
    4. Argümanlar bölümüne -ExecutionPolicy Bypass -File "C:\Scripts\PasswordNotification\PasswordExpiryNotification.ps1" yazın
    # Active Directory Şifre Uyarı Sistemi # Bu script, şifresi yakın zamanda dolacak kullanıcılara otomatik e-posta gönderir # Gerekli modülü içe aktarma Import-Module ActiveDirectory # Günlük dosyası oluşturma $LogFile = "C:\Scripts\PasswordNotification\PasswordExpiryLog_$(Get-Date -Format 'yyyyMMdd').log" $ScriptDir = "C:\Scripts\PasswordNotification" # Script klasörü kontrolü if (!(Test-Path $ScriptDir)) { New-Item -ItemType Directory -Path $ScriptDir -Force } # Loglama fonksiyonu function Write-Log { param( $Message ) $TimeStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" "$TimeStamp - $Message" | Out-File -FilePath $LogFile -Append } Write-Log "Script başlatıldı." # E-posta ayarları - Kendi SMTP sunucunuza göre düzenleyin $smtpServer = "smtp.sirketiniz.com" $smtpPort = 25 $smtpFrom = "it@sirketiniz.com" $emailSubject = "Önemli Bildirim: Şifreniz yakında sona erecek" $emailSignature = @" <p>Saygılarımızla,<br> IT Departmanı<br> <strong>Şirketiniz A.Ş.</strong><br> Tel: +90 212 555 55 55</p> "@ # Domain bilgileri $domain = "sirketiniz.com" # Şifre politikası bilgilerini al $passwordPolicy = Get-ADDefaultDomainPasswordPolicy $maxPasswordAge = $passwordPolicy.MaxPasswordAge.Days # Uyarı yapılacak gün aralıkları $warningDays = @(14, 7, 3, 1) # Bugünün tarihini al $today = Get-Date Write-Log "Şifre politikası bilgisi alındı. Maksimum şifre yaşı: $maxPasswordAge gün." # Tüm etkin kullanıcıları al (devre dışı kullanıcılar hariç) try { $users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false} -Properties Name, EmailAddress, PasswordLastSet, PasswordNeverExpires Write-Log "Active Directory'den $($users.Count) aktif kullanıcı alındı." } catch { Write-Log "Hata: Active Directory'den kullanıcılar alınamadı: $_" exit } # Her bir kullanıcı için kontrol et foreach ($user in $users) { # Kullanıcının e-posta adresi yoksa atla if (::IsNullOrEmpty($user.EmailAddress)) { Write-Log "Kullanıcı $($user.Name) için e-posta adresi bulunamadı, atlanıyor." continue } # Şifre son değiştirilme tarihi yoksa atla if (-not $user.PasswordLastSet) { Write-Log "Kullanıcı $($user.Name) için şifre değişiklik tarihi bulunamadı, atlanıyor." continue } # Şifre son değişikliğinden bu yana geçen süreyi hesapla $passwordSetDate = $user.PasswordLastSet $expireDate = $passwordSetDate.AddDays($maxPasswordAge) $daysToExpire = (New-TimeSpan -Start $today -End $expireDate).Days # Belirlenen uyarı günlerinden birinde ise e-posta gönder if ($warningDays -contains $daysToExpire) { Write-Log "Kullanıcı $($user.Name) için şifre $daysToExpire gün içinde dolacak, bildirim gönderiliyor." $emailBody = @" <html> <head> <style> body { font-family: Arial, sans-serif; } .header { background-color: #0056b3; color: white; padding: 10px; } .content { padding: 20px; } .footer { font-size: 12px; color: #666; border-top: 1px solid #eee; padding-top: 10px; } .highlight { color: red; font-weight: bold; } </style> </head> <body> <div > <h2>Şifre Değiştirme Hatırlatması</h2> </div> <div > <p>Sayın $($user.Name),</p> <p>Bu e-posta, şirket hesabınızın şifresinin <span >$daysToExpire gün içinde</span> sona ereceğini bildirmek için gönderilmiştir.</p> <p>Lütfen, erişim kesintisi yaşamamak için şifrenizi en kısa sürede değiştirin.</p> <h3>Şifre Değiştirme İşlemi:</h3> <ol> <li>Windows bilgisayarınızda <strong>CTRL+ALT+DEL</strong> tuş kombinasyonunu kullanın</li> <li>"Şifre Değiştir" seçeneğini tıklayın</li> <li>Mevcut şifrenizi ve yeni şifrenizi girin</li> </ol> <p><strong>Şifre Politikası Hatırlatması:</strong></p> <ul> <li>En az 8 karakter uzunluğunda olmalı</li> <li>Büyük harf, küçük harf, rakam ve özel karakter içermeli</li> <li>Son 5 şifrenizden farklı olmalı</li> </ul> <p>Herhangi bir sorunuz veya yardıma ihtiyacınız olursa, lütfen IT Yardım Masası ile iletişime geçin.</p> </div> <div > $emailSignature </div> </body> </html> "@ try { # E-posta gönderme $smtp = New-Object Net.Mail.SmtpClient($smtpServer, $smtpPort) $msg = New-Object Net.Mail.MailMessage $msg.From = $smtpFrom $msg.To.Add($user.EmailAddress) $msg.Subject = $emailSubject $msg.Body = $emailBody $msg.IsBodyHtml = $true $smtp.Send($msg) Write-Log "E-posta başarıyla gönderildi: $($user.EmailAddress)" } catch { Write-Log "E-posta gönderimi başarısız: $($user.EmailAddress), Hata: $_" } } } Write-Log "Script tamamlandı." # Çıktıyı göster Write-Host "Şifre uyarı gönderimi tamamlandı. Lütfen logları kontrol edin: $LogFile" -ForegroundColor Green
     
    Önceki Yazı İçerik Üreticiler İçin İş Akışınızı Hızlandıracak 3 Müthiş Araç
    İçerik Üreticiler İçin İş Akışınızı Hızlandıracak 3 Müthiş Araç

    İçerik üreten herkes bilir ki, zaman en değerli kaynaktır. Sosyal medya yö...

    Sonraki Yazı Hayaletin Çırağı
    Hayaletin Çırağı

    Hayaletin Çırağı "Hayaletin Çırağı" (The Spook's Apprentice/The Last App...