25 Ocak 2013 Cuma

Active Directory: Reset Multiple User Password - Versiyon 7

Daha önce ilk 6 versiyonunu hazırladığımız Etki alanında (domain) çoklu parola değiştirme scriptinin ihtiyaç duyulması sebebiyle 7. versiyonunu hazırlanmıştır.

İ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ı:

PassReset_07

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.

PassReset_08

 

 

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