Categories: Active Directory

Генерация случайных паролей с помощью PowerShell

При создании учетных записей пользователей в Active Directory администратор обычно задает каждой учетной записи уникальный начальный пароль, который затем сообщается пользователю (обычно при первом входе у пользователя требуется сменить этот пароль с помощью опции “User must change password at next logon” атрибута AD userAccountControl ). Т.к. вам не хочется каждый раз выдумывать новый случайный пароль пользователям, или вы используете PowerShell скрипт для заведения учетных хзаписей в AD, вы можете автоматизировать генерацию уникальный паролей пользователей с помощью PowerShell.

Для генерации пароля можно воспользоваться методом GeneratePassword из .Net класса System.Web.Security.Membership. Сгенерируем сложный пароль командами:

Add-Type -AssemblyName System.Web
[System.Web.Security.Membership]::GeneratePassword(10,2)

Метод GeneratePassword позволяется генерировать пароль длиной до 128 символов. Метод принимает на вход два параметра — длина пароля (в моем случае 10 символов) и минимальное количество не буквенно-цифровых спецсимволов, таких как !, -, $, &, @, #, % и т.д. ( 2 спецсимвола). Как вы видите, в моем случае был сгенерирован пароль tm-qZl!uQv согласно заданным аргументам.

Нежелательно использовать в пароле более одного-двух спец символов, иначе набрать такой пароль _{!$.R%2*[ пользователю будет нереально.

Таким образом при заведении новых пользователей с помощью командлета PowerShell New-ADUser с уникальным паролем можно использовать следующими командами:

Add-Type -AssemblyName System.Web
New-ADUser -Name "Anton Semenov" -GivenName "Semenov" -Surname "Anton" -SamAccountName "asemenov" -UserPrincipalName " [email protected] " -Path "OU=Users,OU=MSK,DC=remontka,DC=ru" –AccountPassword ([System.Web.Security.Membership]::GeneratePassword(10,2)) -Enabled $true

Также вы можете использовать метод GeneratePassword при сбросе пароля пользователей Active Directory .

Если в вашей организации используются жесткие политики паролей, в некоторых случаях пароль, сгенерированный методом GeneratePassword может не соответствовать требованиям вашей доменной парольной политике . Перед тем, как назначить пароль пользователю вы можете проверить, что он соответствует политикам сложности пароля. Естественно, проверять его на длину и отсутствия логина пользователя в пароле смысла нет. Вы можете проверить, что сложность пароля соответствует как минимум 3 требованиям политики Password must meet complexity requirements (пароль должен содержать 3 типа символов из списка: цифры, символы в нижнем регистре, символы в верхнем регистре и спецсимволы). Если пароль не прошел проверку, нужно сгенерировать его еще раз.

У меня получилась такая PowerShell функция, которая генерирует новый пароль и проверяет его на соответствие требованиям сложности:

Function Generate-Complex-Domain-Password ([Parameter(Mandatory=$true)][int]$PassLenght)
{
Add-Type -AssemblyName System.Web
$requirementsPassed = $false
do {
$newPassword=[System.Web.Security.Membership]::GeneratePassword($PassLenght,1)
If ( ($newPassword -cmatch "[A-Zp{Lu}s]") `
-and ($newPassword -cmatch "[a-zp{Ll}s]") `
-and ($newPassword -match "[d]") `
-and ($newPassword -match "[^w]")
)
{
$requirementsPassed=$True
}
} While ($requirementsPassed -eq $false)
return $newPassword
}

Для генерации пароля из 4 символов с минимум одним спецсимволом выполните команду:

Generate-Complex-Domain-Password (4)

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

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

1 неделя ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

1 неделя ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

1 неделя ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

1 неделя ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

1 неделя ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

1 неделя ago