Как включить или отключить срок действия пароля для локальных учетных записей в Windows 10

Предупреждение пользователей об истечении пароля и действия учётной записи / Хабр

Всем привет! Столкнулись как-то с ситуацией, когда 1 января у многих пользователей истёк срок действия учётной записи и они были заблокированы. Соответственно не смогли работать, шквал телефонных звонков, начиная с утра 1-го числа. Было принято решение заранее предупреждать пользователей об истечении пароля и действия учётной записи по почте. С копией списка предупреждённых пользователей администратору. Скрипты реализации под катом. Для начала надо установить ActiveRoles Management Shell for Active Directory.

Скрипт истечении пароля

Скрипт предупреждает об истечении пароля обычных пользователей за 7 дней, за 3 дня и в день истечения. Топ-менеджеров предупреждает за 5 дней и до истечения.

Add-PSSnapin Quest.ActiveRoles.ADManagement    function send-eMail($to, $PasswordAge, $Days) { if ($PasswordAge -eq 0) { $subject = "Действие вашего пароля истекает сегодня." } else { $subject = "Действие вашего пароля истекает через $PasswordAge $Days." } write-host $to $PasswordAge $Enc = [Text.Encoding]::UTF8  Send-MailMessage -to $to `  -from "IT" `  -subject "Внимание! $subject" `   -body "<spaбрый день.
 $subject
 Рекомендуем изменить пароль, так как после истечения срока действия пароля Вы не сможете получить доступ к информационным ресурсам компании.
 Инструкция по смене пароля находится на портале в разделе «Инструкции».
" `  -priority High `  -dno onFailure `  -smtpServer MAILSERVER `  -BodyAsHtm `  -Encoding $Enc }  function send-eMail-log($log, $to, $subject) { $Enc = [Text.Encoding]::UTF8 $body = "$log
" Send-MailMessage -to $to `  -from "IT" `  -subject $subject `   -body $body `  -smtpServer MAILSERVER `  -BodyAsHtm `  -Encoding $Enc }  function get-dayCut($PasswordAge) { $Days = "дн" if ($PasswordAge -le 20 -and $PasswordAge -ge 5) { $Days = "дней" } if ($PasswordAge -le 4 -and $PasswordAge -ge 2) { $Days = "дня" } if ($PasswordAge -eq 1 -or $PasswordAge -eq 21) { $Days = "день" } return $Days } # У нас 45 дней: $PasswordAgeMax = (Get-QADObject (Get-QADRootDSE).defaultNamingContextDN).MaximumPasswordAge.days  write-host "Пароль истекает: "$PasswordAgeMax; $log = "" $logBoss = ""  # -- 7, 3 и 0 дней --------------------------------------------------------------------------------------------- Get-QADUser -SizeLimit 0 |  Where-Object {$_.AccountIsDisabled -eq $False} | Where-Object {$_.PasswordNeverExpires -eq $False} | % { $PasswordAge = $PasswordAgeMax - ($_.passwordage.days) - 1 $PasswordAge = [int]$PasswordAge    if ($_.parentContainer -ne "domain/General/User") { if ($PasswordAge -eq 7 -or $PasswordAge -eq 3 -or $PasswordAge -eq 0) { $Days = get-dayCut $PasswordAge $addParam = $_.Title + ", " + $_.Department if (($_.mail).Length -gt 0) { send-eMail $_.mail $PasswordAge $Days $addParam = $addParam + ", " + $_.mail }  if ($PasswordAge -le 1) { $log = $log + "" + $_.DisplayName + ", " + $PasswordAge + " (" + $addParam + ")

" } else { $log = $log + $_.DisplayName + ", " + $PasswordAge + " (" + $addParam + ")
" } } } else { $Days = get-dayCut $PasswordAge; write-host $_.DisplayName": "$PasswordAge; if ($PasswordAge -le 5 -and $PasswordAge -ge 0) { send-eMail $_.mail $PasswordAge $Days } if ($PasswordAge -le 0) { $logBoss = $logBoss + $_.DisplayName + ", пароль уже истек (" + $_.mail + ", " + $_.telephoneNumber + ")
" } elseif ($PasswordAge -le 5 -and $PasswordAge -gt 0) { $logBoss = $logBoss + $_.DisplayName + ", пароль истекает через " + $PasswordAge + " " + $Days + " (" + $_.mail + ", " + $_.telephoneNumber + ")
" } } }  if ($log.Length -gt 0) { send-eMail-log $log "IT" "Журнал истечения пароля" }   if ($logBoss.Length -gt 0) { "admin1", "admin2", "admin3" | % {send-eMail-log $logBoss "$_@domain.com" "Журнал истечения пароля у директоров"} }  

Скрипт истечения действия учётной записи

Скрипт предупреждает пользователей об истечении действия учётной записи за 30, 20, 14, 7, 5 дней.

Add-PSSnapin Quest.ActiveRoles.ADManagement  function send-eMail($to,$lsDayCount) { write-host $to $lsDayCount; $Enc = [Text.Encoding]::UTF8 Send-MailMessage -to $to `  -from "IT" `  -subject "Внимание! Ваша учетная запись истекает через $lsDayCount дней" `  -body "Добрый день.
 Срок действия вашей учетной записи истекает через $lsDayCount дней.
" `  -priority High `  -dno onFailure `  -smtpServer MAILSERVER `  -BodyAsHtm `  -Encoding $Enc }  function send-eMail-log($log, $to, $subject) { $Enc = [Text.Encoding]::UTF8 $body = "" + $log + "
" #-Cc "admin1@domain.com" ` Send-MailMessage -to $to `  -from "it@domain.com" `  -subject $subject `  -body $body `  -smtpServer MAILSERVER `  -BodyAsHtm `  -Encoding $Enc }  function check-null($lsPar, $lbComma) { $lsTmp = $lsPar; if ($lsPar.Length -gt 0) { if ($lbComma) { $lsTmp = $lsPar + ", "; } } else { $lsTmp = ""; } return $lsTmp; }  # -- 5, 7, 14, 20, 30 дней ------------------------------------------------------------------------------------- $targetdate5  = ((get-date).AddDays(5)).ToShortDateString(); $targetdate7  = ((get-date).AddDays(7)).ToShortDateString(); $targetdate14 = ((get-date).AddDays(14)).ToShortDateString(); $targetdate20 = ((get-date).AddDays(20)).ToShortDateString(); $targetdate30 = ((get-date).AddDays(30)).ToShortDateString();  $gLog = ""; $gLog5 = ""; $gLog7 = ""; $gLog14 = ""; $gLog20 = ""; $gLog30 = "";  write-host $targetdate5 $targetdate7 $targetdate14 $targetdate20 $targetdate30;  Get-QADUser -SizeLimit 0 |  Where-Object {$_.AccountExpires -ne $null} | Where-Object {$_.AccountIsDisabled -eq $False} | % { $gObjUser = $_; $gsUserOpt = "";  5,7,14,20,30 | % { $targetdate  = ((get-date).AddDays($_)).ToShortDateString();  if (($gObjUser.AccountExpires).ToShortDateString() -eq $targetdate) { write-host $gObjUser.DisplayName"`t"($gObjUser.AccountExpires).ToShortDateString(); if (($gObjUser.mail).Length -gt 0) { send-eMail $gObjUser.mail $_; } $gsUserOpt = (check-null $gObjUser.Title $TRUE) +   (check-null $gObjUser.Department $TRUE) +   (check-null $gObjUser.mail $TRUE) +   (check-null $gObjUser.telephoneNumber $FALSE); if ($gsUserOpt.Length -gt 0) { if ($gsUserOpt.substring($gsUserOpt.length - 2, 2) -eq ", ") { $gsUserOpt = $gsUserOpt.substring(0, $gsUserOpt.length - 2); } $gsUserOpt = " (" + $gsUserOpt +")"; } $gsUserOpt = $gObjUser.DisplayName + $gsUserOpt +"
"; switch ($_) { 5  {$gLog5  = $gLog5  + $gsUserOpt; break} 7  {$gLog7  = $gLog7  + $gsUserOpt; break} 14 {$gLog14 = $gLog14 + $gsUserOpt; break} 20 {$gLog20 = $gLog20 + $gsUserOpt; break} 30 {$gLog30 = $gLog30 + $gsUserOpt; break} } } } }   if ($gLog5.Length -gt 0)  { $gLog = "5 дней, истекает $targetdate5

" + $gLog5 + "
"}  if ($gLog7.Length -gt 0)  { $gLog = $gLog + "7 дней, истекает $targetdate7

" + $gLog7 + "
"}  if ($gLog14.Length -gt 0) { $gLog = $gLog + "14 дней, истекает $targetdate14

" + $gLog14 + "
"}  if ($gLog20.Length -gt 0) { $gLog = $gLog + "20 дней, истекает $targetdate20

" + $gLog20 + "
"}  if ($gLog30.Length -gt 0) { $gLog = $gLog + "30 дней, истекает $targetdate30

" + $gLog30 + "
"}   if ($gLog.Length -gt 0) { "admin1", "admin2", "admin3" | % {send-eMail-log $gLog "$_@domain.com" "Журнал истечения учетной записи"} }  

Предупреждайте пользователей заранее. Комментарии приветствуются.

Иллюстрированный самоучитель по администрированию Windows 2000/2003

Включение учетных записей

Учетные записи могут оказаться отключенными по ряду причин:

  • Если пользователь забыл пароль и пытается его угадать, он может превысить допустимое число неудачных входов в систему, установленное политикой блокировки учетных записей.
  • Другой администратор мог отключить учетную запись, пока пользователь находился в отпуске.
  • Истек срок действия учетной записи.

Ниже описывается порядок действий в ситуациях, когда учетная запись отключена, заблокирована или истек срок ее действия.

Учетная запись отключена

Если учетная запись отключена, выполните следующие действия для ее включения:

  1. Откройте оснастку Active Directory – пользователи и компьютеры (Active Directory Users And Computers)
    или Локальные пользователи и группы (Local Users And Groups)
    , в зависимости от типа учетной записи, которую Вы хотите включить.
  2. Правым щелчком мыши на имени учетной записи вызовите контекстное меню и выберите команду Включить учетную запись (Enable Account)
    .

Учетная запись заблокирована

Если учетная запись заблокирована, выполните следующие действия для ее разблокирования:

  1. Откройте оснастку Active Directory – пользователи и компьютеры
    или Локальные пользователи и группы
    , в зависимости от типа учетной записи, которую Вы хотите разблокировать.
  2. Двойным щелчком на имени учетной записи откройте ее свойства и снимите флажок Заблокировать учетную запись (Account Is Locked Out)
    . В оснастке Active Directory – пользователи и компьютеры
    этот флажок находится на вкладке Учетная запись (Account)
    .

Если учетные записи пользователей часто оказываются заблокированными, возможно, стоит задуматься об изменении доменной политики учетных записей. Вы можете увеличить пороговое значение неудачных попыток входа в систему и уменьшить время, требуемое для сброса значения соответствующего счетчика на ноль. Более подробно аспекты настройки политик учетных записей рассматриваются в разделе Настройка политик учетных записей

.

Истечение срока действия учетной записи

  1. Откройте оснастку Active Directory – пользователи и компьютеры (Active Directory Users And Computers)
    .
  2. Двойным щелчком на имени учетной записи откройте ее свойства и перейдите на вкладку Учетная запись (Account)
    .
  3. В области Срок действия учетной записи (Account Expires)
    выберите Истекает (End of)
    и щелкните на стрелку в соседнем поле. Вам откроется календарь, в котором можно установить новую дату истечения действия учетной записи.
Ссылка на основную публикацию