Сбросить пароль учетной записи пользователя AD и учетные данные электронной почты для пользователя - PullRequest
0 голосов
/ 17 февраля 2020

Задача: Я использую следующий код для импорта одного столбца csv с именем пользователя "samaccountname", и я использую этот один код лайнера -join (33..126|%{[char]$_}|Get-Random -Count 14) для генерации случайного пароля, который хранится в переменной $newpwd с последующим сбросом пароля пользователя и выводом пароля на хост.

Это работает просто найти. Однако я хотел бы отправить этот новый пароль на адрес электронной почты учетной записи AD. У меня есть работающий локальный smtp, и я написал для этой цели простой скрипт Send-Mailmessage, однако я просто не знаю, как добавить «displayname, samaccountname и новый пароль» в тело сообщения. Любая помощь будет оценена.

Import-Module ActiveDirectory
# Set the new password
$newpwd = -join (33..126|%{[char]$_}|Get-Random -Count 14)
$newPassword = ConvertTo-SecureString -AsPlainText "$newpwd" -Force
# Import users from CSV
Import-Csv "C:\Userlist.csv" | ForEach-Object {
$samAccountName = $_."samAccountName"

# Reset user password.
Set-ADAccountPassword -Identity $samAccountName -NewPassword $newPassword -Reset

# Force user to reset password at next logon.
Set-AdUser -Identity $samAccountName -ChangePasswordAtLogon $true
Write-Host "Your user account $samAccountName password has been update to: $newpwd"

}
# Output

Your user account jdoe password has been updated to: 9-5R_*&{/x%#Oh

1 Ответ

0 голосов
/ 17 февраля 2020

Примечание / предупреждение: Если вы сбросите пароль пользователя домена, пользователь больше не сможет войти в систему с новым паролем. Даже если вы отправите этот пароль пользователю после сброса, последний известный ему пароль больше не будет работать и не позволит ему получить доступ к своему почтовому ящику (даже мобильному).


При запуске команда Get-ADUser, она только дает вам basic информацию об учетной записи без всех свойств. Get-Member даст вам базовые c свойства, которые будет возвращать Get-ADUser.

Get-ADUser <identity> | get-member

Теперь, чтобы получить свойства, которые по умолчанию недоступны, вы можете запросить эти свойства с помощью используя их имена или используя *, чтобы получить ВСЕ свойства. Для более крупных поисков это может занять больше времени, чем ожидалось. Я бы порекомендовал только определить поля, которые вам нужно получить. <Identity> is your sameaccountname

$user = Get-ADUser <identity> -Properties DisplayName, SamAccountName, Mail

# OR following command that will load up "every" property into $user.
$user = Get-ADUser <identity> -Properties *

$user | Set-ADAccountPassword -NewPassword $newPassword
$user | Set-ADUser -ChangePasswordAtLogon $True

Write-Output $user.DisplayName
Write-Output $user.SamAccountName
Write-Output $newpwd

и для отправки электронного письма

Send-MailMessage -From administrator@company.com -To $user.Mail -Subject "Password was Reset" -Body "Your password was reset during routine updates. It was set to $newpwd" -SmtpServer xyz.company.com

См. Send-MailMessage

См. Set-ADUser

См. Get-ADUser

...