0

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

1 回答 1

1

您可以导入 csv,提取每个唯一的经理名称,然后使用已提取的 ManagedBy 值编译列表的子集:

$Users = Import-Csv C:\filename.csv
$Managers = $Users | Sort-Object -Property ManagedBy -Unique

for($Manager in $Managers)
{
    $Employees = $Users |Where-Object {$_.ManagedBy -eq $Manager.ManagedBy}
    // send your email here with the contents of $Employees
}
于 2013-09-18T01:44:27.677 回答