我有一个sql脚本根据特定条件将记录导入csv。 CSV格式文件通常是这样的例子:PowerShell Send-MailMessage发送给身体信息不同的多个收件人
Ticket,Last Updated,Priority,Assigned To,Email
2329,1-12-2017,Medium,Assignee1,[email protected]
2417,5-23-2016,Low,Assignee1,[email protected]
2416,4-20-2017,Medium,Assignee2,[email protected]
2463,8-9-2016,Medium,Assignee2,[email protected]
2481,3-4-2017,Low,Assignee3,[email protected]
2499,2-22-2017,Medium,Assignee4,[email protected]
2500,12-20-2016,High,Assignee5,[email protected]
2498,11-30-2016,Medium,Assignee5,[email protected]
注意的电子邮件域可以有相同的电子邮件地址为多行。
我无法理解如何在PowerShell中解析此数据,以便我可以将行数据发送到该行的Email
列中的地址。
但是,当运行此脚本时,我不想将多个电子邮件发送给同一个人。因此,如果Email
列在csv中具有相同的值,我希望在电子邮件正文中发送一封包含多行信息的电子邮件,然后再转到下一个邮件,直到EOF。
在上面的示例csv中,只有一封电子邮件会转到[email protected]
,为Ticket 2329 & 2417
数据等等,直到EOF。我正在做一个Order By Email
在sql查询被转储到csv,如果这有助于组织进程。
我以前使用PowerShell发送电子邮件,但这些脚本不需要解析特定电子邮件地址的数据,因为Send-MailMessage
中的-to
一直是静态的。从另一个脚本示例:
$FromAddress = "[email protected]"
$ToAddress = "[email protected]"
$Subject = "Mail message Subject line"
$SMTPserver = "smtp server address"
if ((Get-Item "data.csv").length -gt 0kb)
{
$html = import-csv -Path .\data.csv | Foreach {$_.web_link= '<a href="{0}">{1}</a>' -f $_.web_link,$_.author;$_} | Foreach {$_.web_link= '<a href="{0}">{1}</a>' -f $_.web_link,$_.title;$_}|
Select @{Name="Link"; Expression={$_.web_link}}, @{Name="Author"; Expression={$_.web_link}} | ConvertTo-Html -Head $htmlformat -Body $bodyformat
$html = $html -replace "<","<" -replace """,'"' -replace ">",">"
$body = $notice + $html
Send-MailMessage -from $FromAddress -to $ToAddress -subject $Subject -bodyashtml ($body | Out-String) -priority High -smtpServer $SMTPserver
}
else {exit;}
作为PowerShell的新手(最好)我想知道我的选择是。我假设我将通过csv循环很多,并有可能构建出数组。我只想确保,为了我自己的教育,这个任务是以最简单的形式完成的,PowerShell为我们提供了帮助。
谢谢。
您可以通过'Email' – BenH
感谢这个评论使用'集团Object'到组。对我来说似乎是一件愚蠢的事情,但再一次,PowerShell不是我的特长。我使用您的建议添加了工作代码作为答案。 –