Я пытаюсь получить все результаты в одном письме вместо отправки почты каждый раз
это то, что у меня есть сейчас, и оно отправляет почту каждому пользователю с истекшим сроком действия пароля или около.
Помощь будет высоко ценится
Спасибо
$MaxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -properties PasswordLastSet,
PasswordExpired,
PasswordNeverExpires,
EmailAddress,
DisplayName,
GivenName,
SN,
pwdLastSet |
foreach {
$UserName = $_.DisplayName
$SN = $_.SN
$Email = $_.EmailAddress
$today = Get-Date
$enc = New-Object System.Text.utf8encoding
$ExpiryDate = $_.PasswordLastSet + $maxPasswordAgeTimeSpan
$DaysLeft = ($ExpiryDate-$today).days
$Msg1 = "<p style='font-family:arial'>Hi,</p>
<p style='font-family:arial'>Password for the $UserName is expired.</p>
<p style='font-family:arial'>Thanks.</p>"
$Msg2 = "<p style='font-family:arial'>Hi,</p>
<p style='font-family:arial'>The password for $UserName will expire $ExpiryDate.</p>
<p style='font-family:arial'>Thanks.</p>"
If ($_.PasswordExpired -like 'True') {
Send-mailmessage -to "xxx@xxx.com"`
-from x@x.com`
-Subject "Mot de passe Windows"`
-body $WarnMsg1 -smtpserver x.x.x.x `
-BodyAsHtml -Encoding $enc
}
ElseIf ($DaysLeft -eq 1) {
Send-mailmessage -to "x@x.com"`
-from x@x.com `
-Subject "Mot de passe Windows"`
-body $WarnMsg2 -smtpserver x.x.x.x `
-BodyAsHtml -Encoding $enc
}
}