【发布时间】:2020-06-01 13:31:19
【问题描述】:
Too all Powershell 专家:我需要一些帮助来弄清楚为什么它不能正常工作。我的意思是错误的,CSV 密码中的帐户会使用随机密码进行更新,并且电子邮件会发送给用户,但我不明白他们为什么获得相同的密码,并且 AD 中的每个帐户都已得到解决。查看电子邮件输出:
第一个用户电子邮件:
Hello Guest DefaultAccount user1, user2, user3, user4 test John Doe,
Your AD Account user1, password has been updated to e,wQlsGfBE;J'4
第二个用户邮件
Hello Guest DefaultAccount user1, user2, user3, user4 test John Doe,
Your AD Account jdoe, password has been updated to e,wQlsGfBE;J'4
我要完成的工作如下:
- 列表项
- 仅使用“samAccountName”导入一列 cvs
- 使用随机生成的 20 个字符长的密码重置 csv 中列出的帐户的密码
- 用新密码向 AD 帐户关联的电子邮件地址发送电子邮件。 (我这样做是因为他们的电子邮件地址与他们的 AD 帐户不同),因此他们能够收到他们的电子邮件。
Import-Module ActiveDirectory
# Import AD user objects and store in users variables
$users = Get-ADUser -Filter * -Properties Name, EmailAddress,SamAccountName | Select SamAccountName,Name,EmailAddress
$Name = $users.Name
$SamAccountName = $users.SamAccountName
$EmailAddress = $users.EmailAddress
#Date
$date = (Get-Date -Format F)
#Generate a random password and store in newpwd
$newpwd = -join (33..126|%{[char]$_}|Get-Random -Count 20)
$newPassword = ConvertTo-SecureString -AsPlainText "$newpwd" -Force
# Import users from CSV
Import-Csv "C:\Userlist.csv" | ForEach-Object {
$samAccountName= $_."samAccountName"
#Proceed with password reset
Set-ADAccountPassword -Identity $samAccountName -NewPassword $newPassword -Reset
Set-AdUser -Identity $samAccountName -ChangePasswordAtLogon $true
#Server configuration
$smtpServer =""
$SmtpPort = ""
# sending option
$from = "it-operation@example.com"
$to = $EmailAddress
$subject ="AD Password updated - " + $date
$priority = "Normal"
$from = ""
$body = @"
Hello $name, <br>
Your AD Account $samAccountName, password has been updated to $newpwd
"@
try {
# Send the report email
Send-MailMessage -To $to -Subject $subject -BodyAsHtml -body $body -SmtpServer $smtpServer -Port $SmtpPort -From $From -Priority $priority
}
catch{
write-warning "error in sending. $_"
} # End User Processing
}
帐户密码正在更新,但无法发送电子邮件
【问题讨论】:
标签: powershell active-directory powershell-3.0 change-password