- Когда истекает пароль пользователя в AD, оповещаем пользователей о необходимости сменить пароль
- Как узнать срок действия пароля пользователя в Active Directory?
- Отключить срок действия пароля для учетной записи
- Политика оповещения об окончании срока действия пароля
- PowerShell скрипт для email-уведомления об истечении срока действия пароля
- Как включить или отключить срок действия пароля для локальных учетных записей в Windows 10
- Включение или отключение срока действия пароля для локальных учетных записей в “Локальные пользователи и группы”
- Включение или отключение срока действия пароля для локальных учетных записей в командной строке
- Произошло истечение срока действия пароля Windows: что делать
- Как настроить срок действия пароля для локальной учетной записи Windows 10
- Как ограничить срок пароля для учётной записи Microsoft
Когда истекает пароль пользователя в AD, оповещаем пользователей о необходимости сменить пароль
В этой статье мы покажем, как с помощью PowerShell узнать, когда истекает пароль учетной записи пользователя в Active Directory, установить бессрочный пароль для учетной записи (PasswordNeverExpires = True) и заблаговременно оповестить пользователей о необходимости сменить пароль.
Если срок действия пароля пользователя в домене истек, учетная запись не блокируется, но не может использоваться для доступа к доменным ресурсам до тех пор, пока пользователь не сменит свой истекший пароль на новый. Чаще всего проблемы с истекшими паролями возникает у удаленных пользователей, которые не могут сменить свой пароль стандартными средствами.
Текущие настройки политики срока действия паролей в домене можно получить с помощью команды PowerShell
В нашем примере максимальный срок действия пароля пользователя в домене – 60 дней.
Как узнать срок действия пароля пользователя в Active Directory?
Можно узнать срок действия пароля и дату его последней смены из командной строки с помощь команды Net user:
net user aaivanov /domain
Необходимые данные присутствуют в значениях:
- Password last set — 1/21/2020 11:18:37 AM
- Password expires — 3/21/2020 11:18:37 AM
- Password changeable — 1/22/2020 11:18:37 AM
Для получения параметров учетных записей в AD мы будем использовать специальный модуль PowerShell для Active Directory, который позволяет получить значения различных атрибутов объектов AD (см. как установить и импортировать модуль AD PowerShell в Windows 10 и Windows Server 2012 R2/2016).
С помощью командлета Get-AdUser можно получить время последней смены пароля пользователя и проверить, установлена ли опция бессрочного пароля (PasswordNeverExpires):
get-aduser aaivanov -properties PasswordLastSet, PasswordNeverExpires, PasswordExpired |ft Name, PasswordLastSet, PasswordNeverExpires,PasswordExpired
- PasswordLastSet — время последней смены пароля пользователя;
- PasswordNeverExpires – возвращает значение True, если пароль пользователя никогда не устаревает;
- PasswordExpired – если пароль пользователя устарел — возвращает True, если пароль не устарел – False;
Но как вы видите, в оснастке указана только время смены пароля. Когда истекает срок действия пароля — непонятно.
Чтобы получить не время последней смены пароля, а дату окончания его срока действия, нужно использовать специальный constructed-атрибут msDS-UserPasswordExpiryTimeComputed. Значение атрибута msDS-UserPasswordExpiryTimeComputed автоматически вычисляется на основании времени последней смены пароля и парольной политики домена
Параметр UserPasswordExpiryTimeComputed возвращает время в формате TimeStamp и для преобразования его в человеко-понятный вид я использую функцию FromFileTime:
Таким образом мы получили время истечения срока действия пароля пользователя.
Чтобы получить срок действия паролей для всех пользователей их определенного контейнера (OU) AD, можно воспользоваться таким скриптом PowerShell:
$Users = Get-ADUser -SearchBase ‘OU=Users,OU=SPB,DC=corp,DC=winitpro,DC=ru’ -filter
$Users | select Name, @
В результате появилась табличка со списком активных пользователей, сроком действия и временем последней смены пароля.
Можно вывести только список пользователей, чей пароль уже истек:
$Users = Get-ADUser -SearchBase ‘OU=Users,OU=SPB,DC=corp,DC=winitpro,DC=ru’ -filter
foreach($user in $Users)<
if( [datetime]::FromFileTime($user.»msDS-UserPasswordExpiryTimeComputed») -lt (Get-Date)) <
$user.Name
>
>
Отключить срок действия пароля для учетной записи
Если вам нужно сделать срок действия пароля определенной учетной записи неограниченным, нужно включить опцию Password Never Expires в свойствах пользователя в AD (это одно из битовых значений атрибута UserAccountControl).
Либо вы можете включить эту опцию через PowerShell:
Get-ADUser aaivanov | Set-ADUser -PasswordNeverExpires:$True
Можно установить флаг Password Never Expires сразу для нескольких пользователей, список которых содержится в текстовом файле:
$users=Get-Content «C:\PS\users_never_expire.txt»
Foreach ($user in $users) <
Set-ADUser $user -PasswordNeverExpires:$True
>
Можно вывести список всех пользователей, для которых отключено требование регулярной смены пароля:
Get-ADUser -filter * -properties Name, PasswordNeverExpires | where <$_.passwordNeverExpires -eq "true" >| Select-Object DistinguishedName,Name,Enabled |ft
Политика оповещения об окончании срока действия пароля
В Windows есть отдельный параметр групповой политики, позволяющий оповещать пользователей о необходимости сменить пароль.
Политика называется Interactive logon: Prompt user to change password before expiration и находится в разделе GPO Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options.
По умолчанию эту политика включена на уровне локальных настроек Windows и уведомления начинают появляться за 5 дней до истечения срока действия пароля. Вы можете изменить количество дней, в течении которых должно появляться уведомление о смене пароля.
После включения этой политики, если пароль пользователя истекает, то при входе в систему в трее будет появляться уведомление о необходимости сменить пароль.
Также вы можете использовать простой PowerShel скрипт, который автоматически вызывает диалоговое окно со предложением сменить пароль, если он истекает менее чем через 5 дней:
Add-Type -AssemblyName PresentationFramework
$curruser= Get-ADUser -Identity $env:username -Properties ‘msDS-UserPasswordExpiryTimeComputed’,’PasswordNeverExpires’
if ( -not $curruser.’PasswordNeverExpires’) <
$timediff=(new-timespan -start (get-date) -end ([datetime]::FromFileTime($curruser.»msDS-UserPasswordExpiryTimeComputed»))).Days
if ($timediff -lt 5) <
$msgBoxInput = [System.Windows.MessageBox]::Show(«Ваш пароль истекает через «+ $timediff + » дней!`nХотите сменить пароль сейчас?»,»Внимание!»,»YesNo»,»Warning»)
switch ($msgBoxInput) <
‘Yes’ <
cmd /c «explorer shell. <2559a1f2-21d7-11d4-bdaf-00c04f60b9f0>«
>
‘No’ < >
>
>
>
Если пользователь нажимает ДА, появляется диалоговое окно Windows Security, которое вы видите при нажатии Ctrl+Alt+Del или Ctrl+Alt+End (при RDP подключении).
Данный скрипт нужно поместить в автозагрузку или запускать как logon скрипт групповых политик.
PowerShell скрипт для email-уведомления об истечении срока действия пароля
Если вы хотите индивидуально рассылать пользователям письма о том, что срок действия их паролей скоро истечет, можно использовать такой PowerShell скрипт.
$Sender = «info@winitpro.ru»
$Subject = ‘Внимание! Скоро истекает срок действия Вашего пароля!’
$BodyTxt1 = ‘Срок действия Вашего пароля для’
$BodyTxt2 = ‘заканчивается через ‘
$BodyTxt3 = ‘дней. Не забудьте заранее сменить Ваш пароль. Если у вас есть вопросы, обратитесь в службу HelpDesk.’
$smtpserver =»smtp.domain.com»
$warnDays = (get-date).adddays(7)
$2Day = get-date
$Users = Get-ADUser -SearchBase ‘OU=Users,DC=corp,DC=winitpro,DC=ru’ -filter
foreach ($user in $users) <
if (($user.ExpirationDate -lt $warnDays) -and ($2Day -lt $user.ExpirationDate) ) <
$lastdays = ( $user.ExpirationDate -$2Day).days
$EmailBody = $BodyTxt1, $user.name, $BodyTxt2, $lastdays, $BodyTxt3 -join ‘ ‘
Send-MailMessage -To $user.EmailAddress -From $Sender -SmtpServer $smtpserver -Subject $Subject -Body $EmailBody
>
>
Скрипт проверяет всех активных пользователей домена с истекающими паролями. За 7 дней до истечения пароля пользователю начинают отправляться письма на email адрес, указанный в AD. Письма отправляются до тех пор, пока пароль не будет изменен или просрочен.
Данный PowerShell скрипт нужно запускать регулярно на любом компьютере/сервере домена (проще всего через Task Scheduler). Естественно, нужно на вашем SMTP сервере добавить IP адрес хоста, с которого рассылаются письма, в разрешенные отправители без аутентификации.
Как включить или отключить срок действия пароля для локальных учетных записей в Windows 10
В Windows есть функция, которая заставляет пользователя изменить пароль по истечению определенного строка. По умолчанию, если данная функция включена, пароль нужно менять через каждые 42 дня, вы же можете изменить данный строк и задать количество дней от 0 до 999. В сегодняшней статье рассмотрим как включить или отключить истечение строка пароля для определенных локальных учетных записей в Windows 10.
Чтобы включить или отключить данную функцию другим пользователям ваша учетная запись должна обладать правами администратора.
Включение или отключение срока действия пароля для локальных учетных записей в “Локальные пользователи и группы”
Инструмент “Локальные пользователи и группы”, который мы будем использовать, есть только в Windows 10 Pro, Enterprise и Education.
1.В строке поиска или в меню выполнить (выполнить вызывается клавишами Win+r) напишите lusrmgr.msc и нажмите Enter.
2.В левой колонке выберите «Пользователи», в правой колонке нажмите правой клавишей мыши на пользователя, которому нужно включить или отключить срок действия пароля => из открывшегося меню выберите «Свойства».
3. Поставьте или уберите галочку с поля “Срок действия пароля не ограничен”. Как уже говорилось выше, если ее убрать – по умолчанию, пользователя каждые 42 дня будет просить сменить пароль. Нажмите “ОК” и закройте окно.
Включение или отключение срока действия пароля для локальных учетных записей в командной строке
Данный способ работает во всех изданиях Windows 10.
1.Откройте командную строку от имени администратора: один из способов — нажать на меню «Пуск» правой клавишей мыши и выбрать «Командная строка (администратор) из открывшегося меню.
2. Чтобы определенному пользователю включить истечение строка пароля – введите в командной строке wmic UserAccount where Name=” имя пользователя ” set PasswordExpires=True заменив имя пользователя и нажав Enter. К примеру, если вам нужно включить истечение строка для пользователя Sa – нужно ввести команду wmic UserAccount where Name=”Sa” set PasswordExpires=True и нажать Enter.
Чтобы отключить истечение строка пароля определенному пользователю – нужно ввести wmic UserAccount where Name=”имя пользователя” set PasswordExpires=False заменив имя пользователя и нажав Enter. К примеру, если вам нужно отключить истечение строка для пользователя Sa – нужно ввести команду wmic UserAccount where Name=”Sa” set PasswordExpires=False и нажать Enter.
Чтобы отключить истечение строка пароля всем пользователям – введите команду wmic UserAccount set PasswordExpires=False и нажмите клавишу Enter.
После надписи “Свойства успешно обновлены” закройте командную строку.
На сегодня всё, если вы знаете другие способы или у вас есть дополнения – пишите комментарии! Удачи Вам 🙂
Произошло истечение срока действия пароля Windows: что делать
После очередного включения компьютера вместо стандартного поля для ввода пароля может появиться уведомление о том, что он истёк и нужно создать новый. Такое сообщение может озадачить, особенно если вы не сами создавали учётную запись, а просили кого-то вам помочь. Скорее всего, пароль ограничили во времени. Предлагаем рассмотреть, как это делается и что предпринять дальше.
Как настроить срок действия пароля для локальной учетной записи Windows 10
Обычно лимит срока устанавливается таким образом:
- В «Поиске» пишется: «выполнить».
- Когда соответствующее приложение найдётся, по нему кликается дополнительной кнопкой.
- Важно обязательно указать Run As Administrator, чтобы ваши действия воспринимались системой, как легитимные.
- В маленькое поле вбивается: lusrmgr.msc + «Enter».
- Из перечня выбирается ник пользователя и соответствующая ему вкладка «Свойства» (через правый щелчок).
- Если убрать галочку с опции «Срок действия пароля не ограничен», то, разумеется, поступит предложение указать временной отрезок.
Как только пройдёт оговоренное количество дней, система уведомит, что срок действия пароля истёк и уже необходимо изменить пароль. Впишите в первую строку старый код, а в следующую – новый, и откроется «Рабочий стол». Но если помимо уведомления не отображается никаких полей и форм, куда можно внести свежие данные вместо истёкших (а такое часто случается), придется действовать так:
- Независимо от того, Windows 10 у вас или 8 или же 7, нажмите в углу кнопку «Отключить».
- Удерживайте «Shift» и в тот же момент выберите «Перезагрузка».
- Перед вами появится меню восстановления ОС. Здесь нужно кликнуть по «Дополнительным параметрам» и выбрать «Командную строку».
- Впишите в чёрное поле: wmic UserAccount set PasswordExpires=False (соблюдая все указанные пробелы) и кликните «Enter».
- Теперь впишите: shutdown /r + «Enter».
- Подождите, пока ОС перезапустится (на отключение уйдет минута). Сообщение об устаревшем пароле должно исчезнуть.
Как ограничить срок пароля для учётной записи Microsoft
Также максимальный срок действия вашего пароля мог быть задан не в настройках самого ПК, а в личном кабинете на сайте Microsoft. Это происходит так:
- После авторизации на ресурсе открываются вкладки: Параметры — Учётные записи — Данные — Управление учётной записью.
- Под аватаркой есть стрелочка вниз, где спрятаны опции: «Дополнительные действия» — «Смена пароля». В ней задаётся новый набор символов, а в конце ставится отметка напротив фразы «Менять каждые 72 дня».
За счёт этого достигается ограниченное использование пароля. К счастью, на сайт вы можете зайти с любого устройства, а не только с ПК, где просрочен код доступа. Придумайте новый и уберите галочку с последнего пункта. Таким образом, пароль снова станет бессрочным. Теперь можно разблокировать экран компьютера, авторизовавшись с помощью свежего ключа.
Если ничего не получилось, вернитесь на главную «Microsoft, откройте вкладку «Поддержка» — «Учётные записи и выставленные счета», а затем кликните по ссылке «Сброс локальной учётной записи» и действуйте по инструкции.
Иногда бывает так, что вы вовсе не пользуетесь паролем и никогда его не создавали (особенно это касается Windows 7), а уведомление об истечении срока всё равно приходит и появляется поле для ввода старого и нового кода. Просто пропустите первое и заполните второе, а потом нажмите «Enter».
Сталкивались ли вы с подобной проблемой? Какой способ помог вам отключить лимитирование пароля? Напишите об этом в комментариях.