AD рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рддрд╛рд░реАрдЦ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдХрднреА-рдХрднреА рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯрд┐рдВрдЧ рдХреА рддрд╛рд░реАрдЦ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреЗрд╢ рд╣реИ рдкрдЯрдХрдерд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдХрд╛рдо рдЖрдПрдВрдЧреЗред
рд╕реЗрдЯ ADUserPswDate.ps1
#             . #    # luzhin.kirill@yandex.ru Add-PSSnapin Quest.ActiveRoles.ADManagement; $gsFilename = "c:\scriptps\set-ADUserPswDate.txt"; $giRows = (Get-Content -LiteralPath $gsFilename).Count; $giX = 0; $giMinimumSleep = 218; $giMaximumSleep = 884; $gtBeginDay = "08:00:00"; $gtEndDay = "19:00:00"; $today_date = Get-date -Format "dd.MM.yyyy"; function set-password($lsAccount) { Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=0} | Out-Null; Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=-1} | Out-Null; } function get-password($lsAccount) { get-qaduser $lsAccount -IncludedProperties pwdLastSet | % {$lsPwdLastSet = $_.pwdLastSet;} $lsPwdLastSet = $lsPwdLastSet.AddHours(3); $lsPwdLastSetNorm = get-date -uformat '%d.%m.%Y %R' -Date $lsPwdLastSet; return $lsPwdLastSetNorm; } function send-eMail($to,$toCc,$text="",$subject="   ",$toBcc="admin3@domain.com") { write-host ": $to | : $subject | : $text"; $Enc = [Text.Encoding]::UTF8; Send-MailMessage -to $to -from "admin1@domain.com" -Bcc $toBcc -Cc $toCc -subject $subject -smtpServer MAIL-SRV -BodyAsHtml $text -Encoding $Enc; } function get-sleepRandom($liMinimum, $liMaximum) { $giSleep = Get-Random -minimum $liMinimum -maximum $liMaximum # $giSleep = 30; $giSleepS = $giSleep % 60; $giSleepM = $giSleep - $giSleepS; $giSleepM = $giSleepM / 60; $gdFuture = (Get-Date).AddSeconds($giSleep); write-host ""$giSleepM"  "$giSleepS"  (  "$gdFuture")..."; Start-Sleep -Seconds $giSleep } function isAtWork($ltBegin, $ltEnd) { $lbAtWork = $FALSE; $giDayOfWeek = (get-date).DayOfWeek.ToString('d'); if (($giDayOfWeek -gt 0) -and ($giDayOfWeek -lt 6)) { $today_date_full = $today_date + " " + $ltBegin; $today_date_full2 = $today_date + " " + $ltEnd; write-host $today_date_full" - "$today_date_full2; $a=[datetime]::parse($today_date_full); $c=[datetime]::parse($today_date_full2); $b = get-date; if (($b -gt $a) -and ($b -lt $c)) { write-host $b".   8:00   19:00,    !"; $lbAtWork = $TRUE; } else { write-host "  8:00   19:00,     ."; } } else { write-host " ,    ."; } return $lbAtWork; } function update-password_wReport($lsAccount) { write-host " "; write-host "*"$lsAccount; $gbAtWork = isAtWork $gtBeginDay $gtEndDay; if ($gbAtWork) { $gsPwdLastSet = get-password $lsAccount; $lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td>"; set-password $lsAccount; $gsPwdLastSet = get-password $lsAccount; $lsText = $lsText + "<td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td></tr>"; } else { $lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>  </td><td style='border:1px solid RGB(200,200,200);'></td></tr>"; } return $lsText; } $gsText = $gsText + "<table style='border-collapse:collapse; width:500px; font-family:Tahoma,Arial,Calibri;font-size:10pt;'>"; $gsText = $gsText + "<tr><td style='width:40%; border:1px solid RGB(200,200,200); text-align:center;'> </td>"; $gsText = $gsText + "<td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'></td><td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'></td></tr>"; if ($ARGS[0] -ne $Null) { $gsText = $gsText + (update-password_wReport $ARGS[0]); } else { Get-Content -LiteralPath $gsFilename | % { $gsText = $gsText + (update-password_wReport $_); $giX = $giX + 1; if ($giX -lt $giRows) { get-sleepRandom $giMinimumSleep $giMaximumSleep; } } } $gsText = $gsText + "</table>"; if ($ARGS[1] -ne $Null) { send-eMail $ARGS[1] "admin1@domain.com" $gsText; } else { send-eMail "admin1@domain.com" "admin2@domain.com" $gsText; } 


рдХреИрдЯ рд╡рд┐рд╡рд░рдг, рдЙрдкрдпреЛрдЧ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рддрд╣рддред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП ActiveRoles рдкреНрд░рдмрдВрдзрди рд╢реЗрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрд╛рддрд╛ рд▓реЗ рд╕рдХрддреА рд╣реИ, рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдиреЗ рдХреА рддрд╛рд░реАрдЦ рдЬрд┐рд╕рдореЗрдВ рд░реАрд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдкрд░ "c: \ scriptps \ set-ADUserPswDate.txt" (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд) рдЪрд▓рддреА рд╣реИред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЦрд╛рддрд╛ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
1. рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯрд┐рдВрдЧ рдХреА рддрд╛рд░реАрдЦ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдХреЛ рд░реАрд╕реЗрдЯ рдФрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред
2. рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ (рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╣реИ) рдкрд░ рдЪрд▓рддреА рд╣реИ, рддреЛ рдкрд╛рд╕рд╡рд░реНрдб рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рдеред 218 рд╕реЗ 884 рд╕реЗрдХрдВрдб рддрдХ рд╕рдВрднрд╡ рдмреНрд░реЗрдХ рдХрд╛ рд╕рдордпред
3. рдкрд╛рд╕рд╡рд░реНрдб 8:00 рддрдХ рдФрд░ рдмрд╛рдж рдореЗрдВ 19:00 рдФрд░ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдкрд░ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
4. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рд▓реЙрдЧ рджреЛ рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд▓реЙрдЧ рджрд┐рдЦрддрд╛ рд╣реИ:


Source: https://habr.com/ru/post/In205696/


All Articles