Forum
Merhaba Arkadaşlar,
Kullanıcıların Şifresi Expires olmadan 7 gün önce kullanıcıya x gün kaldı şifreni değiştirmen gerekiyor diye sistem üzerinden otomatik mail attırıyorum. (All User)
Senaryo:
AD üzerinde oluşturmuş olduğum OU 'lerden herhangi birinin içinde bulunan kullanıcılar (No Domain User) x gün içinde şifresini değiştirmezse rondom olarak şifresini değiştirmek ve kullanıcıya bu şifreyi mail attırmak istiyorum.
Bu işlemi AD / Task Scheduler üzerinden Script yolu gösterek yapmayı planlıyorum, Ayrıca third party uygulamalar kullanmak istemiyorum.
Konu hakkında desteğinizi rica ediyorum arkadaşlar.
Yardımcı olabilirseniz çok sevinirim.
Saygılarımla.
Hakan hocam bu konu hakkında bilginiz var mı veya beni yönlendirebileceğiniz bir kullanıcı çok sevinirim @hakanuzuner
Selam, çok özel bir istek, oturup yazmak lazım malum o da danışmanlığa girer, hazır bir şey olsa idi paylaşırdım.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Selam, çok özel bir istek, oturup yazmak lazım malum o da danışmanlığa girer, hazır bir şey olsa idi paylaşırdım.
Değerli hocam benim elimde kullanıcının adını ve kalan süresini sorgulayan ve mail atan çalışan bir script var şuanda belki bunu düzenlemek daha kolay olabilir, eğer kalan gün sayısı 1 ise rondom şifre verip, şifresini mail attırmak lazım.
Ayrıca dediğiniz gibi danışmanlık konu ise ücreti nedir bilgi verebilirseniz çok sevinirim.
ÇözümPark, gönüllülük esasına dayanıyor, ben zaten ITSTACK ve diğer şirketlerimden profesyonel olarak para kazanıyorum, buradaki vaktim ise gönüllü olarak harcıyorum ondan benim bir ücret talebim yok ama buradan bu şekilde profesyonel hizmet vermiyorum. Yapan birisi var ise belki hazır elinde komut seti olan veya bana göre zamanı daha uygun olan birileri oturup gönüllü yardımcı olabilirler sana.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
ÇözümPark, gönüllülük esasına dayanıyor, ben zaten ITSTACK ve diğer şirketlerimden profesyonel olarak para kazanıyorum, buradaki vaktim ise gönüllü olarak harcıyorum ondan benim bir ücret talebim yok ama buradan bu şekilde profesyonel hizmet vermiyorum. Yapan birisi var ise belki hazır elinde komut seti olan veya bana göre zamanı daha uygun olan birileri oturup gönüllü yardımcı olabilirler sana.
Anladım peki teşekkür ederim umarım bir arkadaş bu konuda bana yardımcı olur.
Ayrıca bknz: ChatGPT
Serkan aslında tam öyle değil, bende GPT4o hesabı var, kıyak olsun diye yazdırayım dedim örnek smtp tarafı sorun orayı eklemedi, şimdi öyle versen mail atmadı diyecek, sonra relay ayarları, spam düşmesi yani gpt için bile bir kaç kodu birleştirmek lazım, özetle uğraşmak lazım. Ondan dedim hazırda birisinde var ise ki sanmıyorum paylaşır, veya vakti çok olan birisi oturur yazar, test eder paylaşır.
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Ben en azından GPT' nin verdiği kodları buraya ekliyorum, biraz ekleme, çıkarma ile çözersin sanki
Kullanıcıların Şifrelerini Değiştirmesi için Hatırlatma Göndermek
# Hatırlatma gönderme süresi (gün)
$reminderDays = 7
# Şifresini değiştirmesi gereken gün sayısı
$passwordExpirationDays = 30
# Kullanıcıları al
$users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false -and PasswordLastSet -le (Get-Date).AddDays(-$passwordExpirationDays + $reminderDays)} -Properties PasswordLastSet, EmailAddress
foreach ($user in $users) {
$daysLeft = $passwordExpirationDays - ((Get-Date) - $user.PasswordLastSet).Days
if ($daysLeft -le $reminderDays) {
$emailAddress = $user.EmailAddress
$username = $user.SamAccountName
# Hatırlatma e-postası gönderme
$subject = "Şifre Değiştirme Hatırlatma"
$body = "Merhaba $username, Şifrenizin süresi dolmak üzere. Lütfen şifrenizi $daysLeft gün içinde değiştiriniz."
Send-MailMessage -To $emailAddress -From "[email protected]" -Subject $subject -Body $body -SmtpServer "smtp.yourdomain.com"
}
}
Şifresini Değiştirmeyen Kullanıcıların Şifrelerini Rastgele Değiştirmek
# Şifresini değiştirmesi gereken gün sayısı
$passwordExpirationDays = 30
# Kullanıcıları al
$users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false -and PasswordLastSet -le (Get-Date).AddDays(-$passwordExpirationDays)} -Properties PasswordLastSet, EmailAddress
foreach ($user in $users) {
# Rastgele şifre oluştur
$newPassword = [System.Web.Security.Membership]::GeneratePassword(12, 3)
# Şifreyi güncelle
Set-ADAccountPassword -Identity $user -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $newPassword -Force)
Set-ADUser -Identity $user -PasswordNeverExpires $false
$emailAddress = $user.EmailAddress
$username = $user.SamAccountName
# Yeni şifreyi e-posta ile gönderme
$subject = "Yeni Şifreniz"
$body = "Merhaba $username, Şifrenizi zamanında değiştirmediğiniz için yeni şifreniz oluşturulmuştur. Yeni şifreniz: $newPassword"
Send-MailMessage -To $emailAddress -From "[email protected]" -Subject $subject -Body $body -SmtpServer "smtp.yourdomain.com"
}
Scripti Task Scheduler ile Çalıştırma
- PowerShell scriptini bir
.ps1
dosyası olarak kaydedin. - Task Scheduler'ı açın ve yeni bir görev oluşturun.
- "Actions" sekmesinde "New" butonuna tıklayın.
- "Action" olarak "Start a Program" seçin ve program/script olarak
powershell.exe
yazın. - "Add arguments (optional)" kısmına aşağıdaki argümanları ekleyin
-File "C:\Path\To\YourScript.ps1"
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
Ben en azından GPT' nin verdiği kodları buraya ekliyorum, biraz ekleme, çıkarma ile çözersin sanki
Kullanıcıların Şifrelerini Değiştirmesi için Hatırlatma Göndermek
Import-Module ActiveDirectory
# Hatırlatma gönderme süresi (gün)
$reminderDays = 7
# Şifresini değiştirmesi gereken gün sayısı
$passwordExpirationDays = 30# Kullanıcıları al
$users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false -and PasswordLastSet -le (Get-Date).AddDays(-$passwordExpirationDays + $reminderDays)} -Properties PasswordLastSet, EmailAddressforeach ($user in $users) {
$daysLeft = $passwordExpirationDays - ((Get-Date) - $user.PasswordLastSet).Daysif ($daysLeft -le $reminderDays) {
$emailAddress = $user.EmailAddress
$username = $user.SamAccountName# Hatırlatma e-postası gönderme
$subject = "Şifre Değiştirme Hatırlatma"
$body = "Merhaba $username, Şifrenizin süresi dolmak üzere. Lütfen şifrenizi $daysLeft gün içinde değiştiriniz."Send-MailMessage -To $emailAddress -From "[email protected]" -Subject $subject -Body $body -SmtpServer "smtp.yourdomain.com"
}
}Şifresini Değiştirmeyen Kullanıcıların Şifrelerini Rastgele Değiştirmek
Import-Module ActiveDirectory
# Şifresini değiştirmesi gereken gün sayısı
$passwordExpirationDays = 30# Kullanıcıları al
$users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false -and PasswordLastSet -le (Get-Date).AddDays(-$passwordExpirationDays)} -Properties PasswordLastSet, EmailAddressforeach ($user in $users) {
# Rastgele şifre oluştur
$newPassword = [System.Web.Security.Membership]::GeneratePassword(12, 3)# Şifreyi güncelle
Set-ADAccountPassword -Identity $user -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $newPassword -Force)
Set-ADUser -Identity $user -PasswordNeverExpires $false$emailAddress = $user.EmailAddress
$username = $user.SamAccountName# Yeni şifreyi e-posta ile gönderme
$subject = "Yeni Şifreniz"
$body = "Merhaba $username, Şifrenizi zamanında değiştirmediğiniz için yeni şifreniz oluşturulmuştur. Yeni şifreniz: $newPassword"Send-MailMessage -To $emailAddress -From "[email protected]" -Subject $subject -Body $body -SmtpServer "smtp.yourdomain.com"
}Scripti Task Scheduler ile Çalıştırma
- PowerShell scriptini bir
.ps1
dosyası olarak kaydedin.- Task Scheduler'ı açın ve yeni bir görev oluşturun.
- "Actions" sekmesinde "New" butonuna tıklayın.
- "Action" olarak "Start a Program" seçin ve program/script olarak
powershell.exe
yazın.- "Add arguments (optional)" kısmına aşağıdaki argümanları ekleyin
-File "C:\Path\To\YourScript.ps1"
Öncelikle değerli desteğiniz için çok teşekkür ederim yarın deneyeceğim, bu arada bunu belirli bir klasöre uygulayabilirmiyiz ? örnek OU saha klasörü içindeki kullanıcılara uygulamak istiyorum domainde olmayan kullanıcılara mümkün mü acaba.
Tabi, ou isminde bir değişken eklemen lazım komutlara, ben ilkine ekledimi diğerine ekleyebilirsin.
Import-Module ActiveDirectory
# Hatırlatma gönderme süresi (gün)
$reminderDays = 7
# Şifresini değiştirmesi gereken gün sayısı
$passwordExpirationDays = 30
# Belirli bir OU'daki kullanıcıları al
$ou = "OU=YourOU,DC=yourdomain,DC=com"
$users = Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $false -and PasswordLastSet -le (Get-Date).AddDays(-$passwordExpirationDays + $reminderDays)} -Properties PasswordLastSet, EmailAddress -SearchBase $ou
foreach ($user in $users) {
$daysLeft = $passwordExpirationDays - ((Get-Date) - $user.PasswordLastSet).Days
if ($daysLeft -le $reminderDays) {
$emailAddress = $user.EmailAddress
$username = $user.SamAccountName
# Hatırlatma e-postası gönderme
$subject = "Şifre Değiştirme Hatırlatma"
$body = "Merhaba $username, Şifrenizin süresi dolmak üzere. Lütfen şifrenizi $daysLeft gün içinde değiştiriniz."
Send-MailMessage -To $emailAddress -From "[email protected]" -Subject $subject -Body $body -SmtpServer "smtp.yourdomain.com"
}
}
Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************