Очень простой вопрос, извините, но я уверен, что у меня было это раньше. Я хочу просто знать, как я могу получить доступ к переменной изнутри foreach
. Например, в этом простом коде, это просто echos $ username, но не точное имя, которое я после ... однако, если вы положили echo $user
, похоже, что он может читать foreach
и csv.Вызов переменной, которая была установлена внутри foreach - powershell
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
$ExSession = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri http://dlonsexh05.server.local/PowerShell/ –Authentication Kerberos
import-PSSession $Exsession -AllowClobber
$users= import-csv 'C:\Surface Pro\users.csv'
foreach ($user in $users){
$duedate = $user.DueDate
$Username = $user.Name
$email = $user.EmailAddress
$smtpServer = "dlonsexh05.server.local"
$smtpFrom = "[email protected]"
$smtpTo = $email
$messageSubject = "$username your laptop is due back on $duedate"
$SMTPPort = "587"
$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
$message.Subject = $messageSubject
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)
Remove-PSSession $Exsession
break
}
Спасибо, briantist. Я хотел бы объявить загрузку переменных внутри этого CSV, а затем использовать их позже. Например $ email = $ User.email ... затем вне цикла я хотел бы использовать его в функции или что-то подобное, чтобы отправить электронное письмо всем в столбце электронной почты csv. Должен ли я поместить весь свой SMTP-код внутри цикла? –
@ DanielGripton хорошо, да. Каждая итерация цикла дает вам одну строку CSV, поэтому код, который вы хотите запустить против _each row_, должен находиться внутри цикла. – briantist
Хорошо, это сложно! Я поместил код внутри, он отправляет письма на каждый адрес электронной почты в CSV, но отправляет еще 5 пустых. Если я сделаю перерыв, он отправляется только на верхнюю. Я бы хотел, чтобы он работал в CSV, а затем остановился, как только он закончил все адреса электронной почты. Вот код! –