我们目前有大量的分发列表,当新用户开始使用业务时,根据他们工作的领域,他们会被添加到不同的 DL。现在我不负责我们的租户,所以使用动态组现在不是一个选择,所以我必须发挥我们的新用户工具的创造力。
因此,我可以仅使用一次就让它手动工作,但是当我尝试从 csv 中单元格内的数据中让它工作时,它无法分离出分发列表。
因此,这是我可以通过 Powershell 运行的手动位......
$dls = "DL1","DL2"
$dls | Foreach-Object {Add-DistributionGroupMember -Identity $_ -Member "UserEmail"}
一切正常,但是当我尝试运行下面的程序时,出现错误...
Import-csv 'ImportPath' | foreach-object {
$DLs = $_.DistributionLists
$DLs | Foreach-Object {Add-DistributionGroupMember -Identity $_ -Member UserEmail}
}
我得到了这个错误,所以我推测 Powershell 不喜欢我两次 foreach 的方式。
无法将参数绑定到参数“Identity”,因为它为空。+ CategoryInfo : InvalidData: (:) [Add-DistributionGroupMember],ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Add-DistributionGroupMember + PSComputerName : outlook.office365.com
我也进行了一些谷歌搜索,并将此与我发现的类似问题的另一个解决方案拼凑在一起这里
$DGs = Import-Csv "ImportPath"
$DGs | foreach {
[string]$Group = $_.Group
$Groups = $Group.replace(" ","") -split ","
IF ($Groups) {
ForEach ($Group in $Groups) {
Add-DistributionGroupMember -Identity $Groups -Member "UserEmail"
}
}
}
然后返回错误
The operation couldn't be performed because object 'DL1 DL2' couldn't
be found on '*.PROD.OUTLOOK.COM'.
+ CategoryInfo : NotSpecified: (:) [Add-DistributionGroupMember], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : [Server=*,RequestId=*,TimeStamp=17/09/2019 14:37:41] [FailureCategory=Cmdlet-ManagementObjectNotFoundException]*,Microsoft.Exchange.Management.RecipientTasks.AddDistributionGroupMember
+ PSComputerName : outlook.office365.com
抱歉,我写的文章和拼凑 powershell 脚本的尝试都很糟糕,我尝试过在这里和那里做一些调整,但没有任何效果。我只是想知道是否有办法让 Powershell 将数据视为纯文本,就像第一个示例中的 manual 变量一样。csv 中的数据只有一列,带有列标题,然后是两个用逗号分隔的 DL(我尝试过用“& ' 输入每个 DL 周围的数据,甚至只输入名称,但无论如何我都无法成功)。
答案1
请参阅以下功能作为您问题的解决方案。
Function AddTo-DistributionGroups {
Param(
[String]$User,
[String]$BusinessUnit,
[String]$CSVLocation
)
$Data = Import-CSV -Path $CSVLocation
Foreach ($Line in $Data){
If($Line.BusinessUnit -eq $BusinessUnit){
Foreach($DG in $line.DGs.split(";")){
Add-DistributionGroupMember -Identity $DG -Member $User
Write-Host Added $User to $DG
}
}
}
}
您可以按照以下方式格式化您的 CSV:
BusinessUnit,DGs
NorthWest,DG1;DG2;DG3
SouthWest,DG2;DG5
Europe,DG7;DG8;DG9
这样您就可以在第一个单元格中填入业务部门名称,在第二个单元格中填入以分号分隔的分发组。请确保 Excel 中的两个顶部单元格分别包含“BusinessUnit”和“DG”。
要使用此函数:
AddTo-DistributionGroups -User <User Email> -BusinessUnit <BusinessUnit Name> -CSVLocation <Location of CSV>