İlk 6 versiyonu için http://siberblog.org/index.php/active-directory-reset-multiple-user-password/ linkini inceleyebilirsiniz.
7.Script UserPassResetV7.ps1: Belirlenen bir OU altındaki kullanıcıların parola değişim zamanını kontrol ederek, belirlenen zaman içerisinde parolasını değiştirmeyen kullanıcıların parolalarını sıfırlayarak belirlenen şifre politikasına göre otomatik üretilen bir şifreye eşitleme.
NOT: Script dosyası içerisinde kullanıcıların bulunduğu OU alanı ve gün alanı çalıştırılmadan güncellenmelidir. Aksi halde script düzgün çalışmaz
# ===========================================================# NAME: UserPassResetV7.ps1 # AUTHOR: Bekir Yalçın # DATE: 21/01/2013 # COMMENT: Belirlenen bir OU altındaki kullanıcıların parola değişim zamanını kontrol ederek, # belirlenen zaman içerisinde parolasını değiştirmeyen kullanıcıların parolalarını, # sıfırlayarak belirlenen şifre politikasına göre otomatik üretilen bir şifreye eşitleme. # VERSION: 7 # =========================================================== # Import-Module ActiveDirectory Clear #Belirlenen gün sayısı $Limit = 30 #Kullanıcıların bulundugu OU'yu belirtin $OrganizationUnit="OU=KULLANICILAR,DC=SIBERBLOG,DC=ORG" #İşlem tarihini dosyaya ekliyoruz. $ReportFile = ( "Users" + (Get-Date –f "_yyyyMMdd_HHmmss").tostring() + ".csv" ) $DosyaEkle=@() Function SifreUretim { $Sifre = New-Object System.Random #Şifre kaç karakter uzunlukta olacak? [int]$SifreUzunlugu = 10 #En az kaç büyük harf içerecek [int]$Min_Buyuk = 3 #En az kaç küçük harf içerecek [int]$Min_Kucuk = 3 #En az kaç rakam içerecek [int]$Min_Rakam = 2 #En az kaç sembol içerecek [int]$Min_Sembol = 1 #Geri kalan karakter sayısı [int]$Kalan = ($SifreUzunlugu - ($Min_Buyuk + $Min_Kucuk + $Min_Rakam + $Min_Sembol)) #Karakter listeleri $Buyuk = @("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") $Kucuk = @("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") $Rakam = @(1,2,3,4,5,6,7,8,9,0) $Sembol = @("!","@","#","%","&",".","+","=","-","_") $Tamami = $Buyuk + $Kucuk + $Rakam + $Sembol $Sifre = @() $Tamami = @() #$Buyuk dizisinden istenilen kadar karakter al ve Sifre'ye ekle if ($Min_Buyuk -gt 0) { 1..$Min_Buyuk | % {$Sifre += Get-Random $Buyuk} $Tamami += $Buyuk } #$Kucuk dizisinden istenilen kadar karakter al ve Sifre'ye ekle if ($Min_Kucuk -gt 0) { 1..$Min_Kucuk | % {$Sifre += Get-Random $Kucuk} $Tamami += $Kucuk } #$Rakam dizisinden istenilen kadar karakter al ve Sifre'ye ekle if ($Min_Rakam -gt 0) { 1..$Min_Rakam | % {$Sifre += Get-Random $Rakam} $Tamami += $Rakam } #$Sembol dizisinden istenilen kadar karakter al ve Sifre'ye ekle if ($Min_Sembol -gt 0){ 1..$Min_Sembol | % {$Sifre += Get-Random $Sembol} $Tamami += $Sembol } #İstenilen şifre uzunluğuna tamamlamak için geri kalanları tamamından seçerek şifreye ekle 1..$Kalan | % {$Sifre += Get-Random $Tamami} #İstenilen uzunlukta elde edilen şifreyi kendi içinde karıştır $YeniSifre = @() Get-Random $Sifre -count $SifreUzunlugu | % {[string]$YeniSifre+= $_} Return $YeniSifre } # Administrator kullanıcısı hariç $UserList = Get-ADUser -Filter {SamAccountName -ne "Administrator"} -SearchBase $OrganizationUnit -Properties * | Where { $_.passwordLastSet –lt (Get-Date).AddDays(-$Limit) } Foreach($User in $UserList) { $YeniSifre=SifreUretim #Set-ADAccountPassword $User -NewPassword (ConvertTo-SecureString $YeniSifre -AsPlainText -force) -Reset Write-Host $User.SamAccountName,$YeniSifre,$User.PasswordLastSet,$User.LastLogonDate $Dosya=New-Object PSObject -Property @{ SamAccountName = $User.SamAccountName YeniParola = $YeniSifre Description = $User.Description PasswordLastSet = $User.PasswordLastSet LastLogonDate = $User.LastLogonDate ObjectCategory = $User.ObjectCategory department = $User.department userWorkstations = $User.userWorkstations Enabled = $User.Enabled mail = $User.mail OfficePhone = $User.OfficePhone } $DosyaEkle += $Dosya } #Kullanıcı ve yeni şifreleri dosyaya aktarıyoruz $DosyaEkle | Format-Table SamAccountName,YeniParola,Description,PasswordLastSet,LastLogonDate,ObjectCategory, department,userWorkstations,Enabled,mail,OfficePhone -AutoSize | Out-File -Width 1000 -Append -FilePath $ReportFile -Encoding Unicode Notepad.exe $ReportFile |
Script7 download: UserPassResetV7.ps1
Script ekran çıktısı:

Log dosya çıktı örneği: Kullanıcı adı, yeni parolası, Açıklama, Son parola değişim zamanı, Kullanıcının son logon zamanı gibi önemli olabilecek bilgiler log dosyasına yazılmıştır.

DİKKAT: Aktif dizin şifre politikasına uygun şifre belirlenmelidir. Aksi taktirde şifreler değişmez ve hata mesajı alırsınız.

Script7 download: UserPassResetV7.ps1
Hiç yorum yok:
Yorum Gönder