1
非常基本的问题,我很抱歉,但我确信我之前没有这个。我想知道如何从foreach
内部访问变量。例如在这个简单的代码中,它只是回声$用户名,但不是我以后的确切名称......但是如果您将回声$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的email列中的每个人。我是否必须将所有SMTP代码放入循环中? –
@DanielGripton很好,是的。每个循环迭代都会为您提供一行CSV,因此您要针对每个row_运行的代码应位于循环内部。 – briantist
好吧,这很棘手!我把代码放在里面,它发送电子邮件到CSV中的每个电子邮件地址,但发送了大约5个空白邮件。如果我休息一下,它只会发送到最上面的一个。我希望它能够处理CSV,然后在完成所有电子邮件地址后停止。继承人的代码! –