我有一个 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"