我有一个 CSV 文件,其中包含用户列表以及这些标题由谁管理:
DisplayName、Alias、CA5、Managedby
我想在 powershell 中导入此列表,并能够向每个经理发送一封电子邮件,其中包含在 managedby 字段中列为经理的帐户列表(DisplayName、Alias、CA5)。我可以毫无问题地创建电子邮件我需要知道如何将 CSV 文件的所有行编译到同一个电子邮件中。使用下面的示例 CSV,我最终应该会收到三封电子邮件(ManagedByA、ManagedbyB 和 ManagedByC 各一封)。发给 ManagedByA 的电子邮件将包含三行,其中包含:
DN1 A1
DN2 A2 DL
DN3 A3
我的 CSV 看起来像这样:
DisplayName,Alias,CA5,ManagedBy
DN1,A1,,ManagedByA
DN2,A2,DL,ManagedByA
DN3,A3,,ManagedByA
DN4,A4,,ManagedByB
DN5,A5,,ManagedByB
DN6,A6,DL,ManagedByB
DN7,A7,,ManagedByB
DN8,A8,,ManagedByC
DN9,A9,DL,ManagedByC
DN10,A10,,ManagedByC
我的代码(来自 Mathias R. Jessen):
$Import = Import-CSV "C:\powershell\DL\Reports\DLReportEmail.csv"
### Find unique ManagedBy
$Managers = $Import | Sort-Object -Property ManagedBy -Unique
ForEach ($Manager in $Managers){
$Employees = $Import | Where-Object {$_.ManagedBy -eq $Manager.ManagedBy}
$Body = "DearXXXX, `r`n"
ForEach($Employee in $Employees){
$Alias = $Employee.Alias
$DisplayName = $Employee.DisplayName
$CA5 = $Employee.CA5
$Body += "$DisplayName : $Alias : $CA5 `r`n"
}
$Body += "`r`n"
$Body += "Thanks"