2015-04-09 19 views
0

Я запускаю планировщик заданий для выполнения моей 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   
    } } 

ответ

0
if ($users -ne $null) # lists can be empty as well, in which case the count fails 
{ 
    if ($users.count -gt 0) { 
     # send the email here 
    } 
} 
+0

Ошибка в строке 1 -ne нуль –

+0

нуль, вероятно, следует $ нулевой – FrozenSoul

+0

любом случае я изменил код, если ($ пользователей), потому что если его не обнулить его так, то он переходит к следующей строке , Однако, когда $ users.count выполняется, условие всегда ложно, даже если в списке есть пользователи. Я думаю, что, возможно, это массив или словарь. Как вы думаете? –

Смежные вопросы