Периодически из первых постов сайта всплывают какие-то недоделки или скрипты с достаточно противоречивой логикой. По мере сил и времени, стараюсь навести порядок в этом стихийном хаосе. Сегодня откорректирую логику, представленную в этом скрипте.
В прошлый раз я снимал галку «Срок пароля не ограничен» для всех пользователей в Active Directory с использованием временного файла:
$file = "C:\users.txt"
Ещё тогда я планировал выбросить из скрипта весь этот мусор, но руки так и не дошли. Зато руки дошли сегодня.
Сократив весь бурелом, я получил пьесу из одного кортежа, в котором (по классике) есть и завязка, и кульминация с циклом, и развязка. Всё это художество даже можно гнуть по потребностям.
Вот так можно проставить галочку «Срок пароля не ограничен» всем пользователям в домене:
Get-ADUser -Filter "Enabled -eq 'True' -AND PasswordNeverExpires -eq 'False'" |
ForEach-Object {
Set-ADUser $_ -PasswordNeverExpires $True
}
Скрипт пробежит по всем пользователям, собрав все включенные учётные записи в домене, у которых пароль имеет срок действия и сделает его бесконечным. С фильтром можете поиграть сами, отобрав у кортежа перебор. Тут всё зависит от целей и Вашей фантазии.
А этим можно сделать обратное действие, сняв заветную галочку:
Get-ADUser -Filter "Enabled -eq 'True' -AND PasswordNeverExpires -eq 'True'" |
ForEach-Object {
Set-ADUser $_ -PasswordNeverExpires $False
}
Ну, и в заключении — делаем выборку из конкретного подразделения:
Get-ADUser -Filter "Enabled -eq 'True' -AND PasswordNeverExpires -eq 'True'" -SearchBase "OU=Users,DC=domain,DC=local" |
ForEach-Object {
Set-ADUser $_ -PasswordNeverExpires $False
}
На этом пятничный вечер всё, а вот реверс недоделок нет.