Я запускаю планировщик заданий для выполнения моей PowerShell каждые 30 минут.PowerShell для отправки электронной почты
Так
$ пользователей = Search-ADAccount -LockedOut -SearchBase "OU = Люди, DC = пример, DC = ком" -SearchScope Subtree | Выберите SamAccountName
Это возвращает список пользователей. Теперь я хочу, чтобы создать emailbody с пользователями
$EmailBody = ForEach($user in $users) {"`r`n",$user}
Send-MailMessage -To $to -Subject "Locked Accounts" -BodyAsHtml $EmailBody -From $from -Credential $cred -SmtpServer $server -Debug
Однако мой текущий код будет посылать электронную почту, даже если никто не будет заблокирован. В любом случае, я могу проверить, есть ли у пользователей $ не менее 1 человека?
(я не тестировал $ EmailBody, но хотел бы знать, если это приемлемо для BodyAsHtml)
================
Обновлено код
if ($users) {
if ($users.count -gt 0) {#even if there are users, this line always is false.
# send the email here
foreach($user in $users)
{
$message = $message + " " + $user + " is locked out" + "`r`n"
Write-Host $user
}
Send-MailMessage -To $to -Subject "Locked Accounts" -BodyAsHtml $message -From $from -Credential $cred -SmtpServer $server -Debug
} }
Ошибка в строке 1 -ne нуль –
нуль, вероятно, следует $ нулевой – FrozenSoul
любом случае я изменил код, если ($ пользователей), потому что если его не обнулить его так, то он переходит к следующей строке , Однако, когда $ users.count выполняется, условие всегда ложно, даже если в списке есть пользователи. Я думаю, что, возможно, это массив или словарь. Как вы думаете? –