blog by ficti0n: Генерация случайного пароля пользователя и отправка его по e-mail (PowerShell)

пятница, 10 октября 2014 г.

Генерация случайного пароля пользователя и отправка его по e-mail (PowerShell)

Рассмотрим пример генерации пароля. В интернете есть много примеров создания рандомного пароля, но вот запомнить  кучу случайно сгенерированных символов не реально, тем более у меня пароль меняется раз в неделю.

Для начала разделим пароль на символы и цифры.

Цифры создаются совсем просто: 
# задаем набор чисел от 0 до 9
$mass1 = [Char[]]'0123456789'
 # рандомно выбираем 4 числа
$list1 = -join (1..4 | Foreach-Object { Get-Random $mass1 -count 1 })

Так как я желал получить запоминаемый пароль, то решено было использовать файл с английскими словами. В просторах интернета был найдет нужный файлик. Используем его так:
# Загружаем массив слов
$words = import-csv c:\dict.csv
# Получаем случайное слово
$word1 = ($words[$rand.Next(0,$words.Count)]).Word

# Усложняем слово
# Забираем первую букву и делаем ее заглавной
$first = $word1.Substring(0,1);
$first = $first.ToUpper();

# Забираем все слово кроме первой буквы
$last = $word1.Substring(1); 
# Заменяем буквы i, o на 1, 0 соответственно, если такие есть. (Или как фантазия позволяет)
$last = $last -creplace 'i','1'
$last = $last -creplace 'o','0'


Теперь все это компонуем разделяя спецсимволом слово и цифры:
$list3= $first+$last+'!'+$list1

Присваиваем полученный пароль пользователю:
#  Шифруем строку
$securestring =ConvertTo-securestring $list3 -asplaintext -force
# Задаем нужному пользователю сгенерированный пароль
get-aduser "User01" | set-adaccountpassword -newpassword $securestring


 
Отправляем пароль по почте. Например себе и начальнику.
# Задаем с какого адреса отправить письмо
$FromAddress ="outmail@mydomain.ru"
# Кому отправить письмо
$ToAddress ="mymail@mydomain.ru" 
# Тема письма
$MessageSubject ="New password for Aministrator"
# В сообщение вставляем имя пользователя и новый пароль
$MessageBody ="Username: User01          Password: $list3"

# Указываем параметры почтового сервера
$SendingServer ="mail.mydomain.ru"

$SMTPMessage =New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
# Добавляем адрес почты начальника
$SMTPMessage.to.Add('nachalnik@mydomain.ru');

#Отправляем
$SMTPClient =New-Object System.Net.Mail.SMTPClient $SendingServer
$SMTPClient.Send($SMTPMessage) 

Комментариев нет:

Отправить комментарий