Назад | Перейти на главную страницу

Странное поведение электронной почты в PowerShell

Я добавляю новый элемент PowerShell в свое создание пользователя, который должен отправить своему руководителю электронное письмо с предупреждением о том, что он был создан. Однако по какой-то причине он отправляет учетные данные следующему супервизору в списке, а не супервизору в этой строке, и первый указанный супервизор получает заголовки в качестве информации. CSV построен так:

1.Lastn | Firstn | Программа | Пароль. | Руководитель
2. Утка | Даффи | ........ 998 | ChangeMe | Bob.Dole
3.Зайчик | Багги | ......... 878 | ChangeMe | Элмер Фадд

Сценарий такой:

$Users = Import-Csv "C:\PSScripts\Create\users.csv" -header("lastname","firstname","program","password","supervisor")
    foreach ($User in $Users) 
    {  
$OU = "OU=users,DC=Contoso,DC=local"
$UserFirstname = $User.Firstname 
$UserLastname = $User.LastName 
$Supervisor = $User.Supervisor
$subject = "New Account Creation Completed"  
$body = "Good Morning! This e-mail is to alert you that your new staff person $SAM has been granted Contoso.org e-mail access. To log in to outlook web application, their username is $SAM and their temporary password is ChangeMe . They will be prompted to change it upon successful login."
$smtp = "10.10.1.79"
$SAM =  $UserFirstname + "." + $UserLastname 
Send-MailMessage -to $Supervisor@Contoso.org -Subject $subject -body $body -SmtpServer $smtp -from sarah.sanderson@Contoso.org
}

Однако супервизору «Bob.Dole» по электронной почте отправляются учетные данные «Buggs.Bunny», а супервизору Элмеру.Фадду отправляется электронное письмо «Firstname.Lastname», что и составляет основу $ Sam. Таким образом, учетные данные отправляются супервизору на одну строку ниже, и последнему супервизору отправляется электронное письмо «имя.фамилия», а не лицо. Кроме того, я получаю недоставленные электронные письма, в которых говорится, что учетная запись электронной почты Supervisor@contoso.org недействительна, поэтому, похоже, что-то неверно истолковывает, хотя он выполнил команду на отправку $ supervisor после того, как это сделал. Если я вставляю пустую ячейку под заголовок «Супервизор», так что столбец супервизора сдвигается вниз на единицу, он выдает мне ошибку о том, что должен быть указан получатель, НО затем отправит учетные данные ПРАВИЛЬНОМ супервизору, как только переключены на пониженную передачу.

Проблема в том, что вы назначаете $SAM после того, как вы обратитесь к нему в своем задании $body.

$Users = Import-Csv "C:\PSScripts\Create\users.csv" -header("lastname","firstname","program","password","supervisor")
foreach ($User in $Users) 
{  
    $OU = "OU=users,DC=Contoso,DC=local"
    $UserFirstname = $User.Firstname 
    $UserLastname = $User.LastName 
    $Supervisor = $User.Supervisor
    $subject = "New Account Creation Completed"  

    #moved before $body= .... $SAM ...
    $SAM =  $UserFirstname + "." + $UserLastname 

    $body = "Good Morning! This e-mail is to alert you that your new staff person $SAM has been granted Contoso.org e-mail access. To log in to outlook web application, their username is $SAM and their temporary password is ChangeMe . They will be prompted to change it upon successful login."
    $smtp = "10.10.1.79"
    Send-MailMessage -to $Supervisor@Contoso.org -Subject $subject -body $body -SmtpServer $smtp -from sarah.sanderson@Contoso.org
    }