将新用户添加到多个 O365 分发列表

将新用户添加到多个 O365 分发列表

我们目前有大量的分发列表,当新用户开始使用业务时,根据他们工作的领域,他们会被添加到不同的 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>

相关内容