Powershell. User must change password. Требовать смены пароля при следующем входе.
Не знаю, многие ли сталкиваются с проблемой массового изменения(создания, настройки, добавления в группы) локальных пользователей. Мне пришлось.
Вопрос массового создания локальных пользователей был описан в статье. Сегодняшняя тема — дополнение к ней.
Как вы знаете, заставить пользователя сменить пароль при первом входе можно из графического интерфейса:
Но, если это нужно проделать с десятками или сотнями юзеров? Этот вариант не самый веселый.
Естественно, сразу на ум приходит использование командной строки или Powershell.
В этой статье мы посмотрим, как снять или поставить чекбокс о необходимости смены пароля пользователем при помощи маленькой «скриптюшечки» Powershell.
Когда я столкнулся с необходимостью поставить этот чекбокс у многих пользователей, я сразу решил сделать это при помощи Powershell, но, как оказалось, что именно этот чекбокс Powershell легко ставить и снимать не умеет.
То есть, вы можете отключить пользователя, разрешить или запретить ему менять пароль и т.д., но просто поставить и снять эту галку не сможете.
Ну что же, не сможем просто, будем искать «хоть как».
После довольно продолжительного «хождения в Гугл» мне удалось раскопать способ заставить эту «непокорную галку» ставиться и сниматься по нашему желанию.
Ниже приведены строчки, которые нам нужны(не забудьте запустить Powershell от имени Администратора):
1 2 3 4 5 6 7 8 9 |
$Path_to_csv = Read-Host "Введите путь до файла-списка пользователей" $users = Import-Csv $Path_to_csv -Encoding Default -Delimiter ";" foreach ($user in $users) { $user = Get-LocalUser -Name $user.Name $usr = [ADSI]"WinNT://localhost/$user" $usr.passwordExpired = 1 $usr.setinfo() } |
Параметр .passwordExpired делает пароль пользователя истекшим, что как раз и ставит или снимает чекбокс «User must change password». Если присвоить ему значение = 1, то галка поставится, если = 0, то снимется.
В этом скрипте пользователи берутся из файла .csv. О том, как должен выглядеть этот файл, читайте в статье
Powershell. Как создать локальных пользователей и добавить их в группы.
Скрипт можно использовать как самостоятельно, так и добавить нужные строки в скрипт создания новых пользователей.
Основой для скрипта послужила заметка https://gallery.technet.microsoft.com/scriptcenter/PowerShell-to-force-a-2db5562c
Возможно, вы захотите узнать как получить имя владельца процесса при помощи Powershell на локальном или удаленном компьютере.