我有一个CSV文件,其中包含用户列表以及使用这些标头管理的人员:
显示名称,别名,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"
答案 0 :(得分: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
}