Заметки · 07.08.2026

Игра в галчонка

Периодически из первых постов сайта всплывают какие-то недоделки или скрипты с достаточно противоречивой логикой. По мере сил и времени, стараюсь навести порядок в этом стихийном хаосе. Сегодня откорректирую логику, представленную в этом скрипте.

В прошлый раз я снимал галку «Срок пароля не ограничен» для всех пользователей в 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 
    }

На этом пятничный вечер всё, а вот реверс недоделок нет.