创建包含多个用户的通讯组列表

时间:2017-04-11 22:32:27

标签: powershell office365 exchange-server

我想从CSV文件在Office 365中创建通讯组。

在我的CSV文件中,有一个包含多个用户的列,如此屏幕截图所示:

enter image description here

这是我的PowerShell代码:

$Groups = Import-Csv -path "C:\Users\Youssef IBRAHIMI\Desktop\Script create LD Azure\groupsMM2.csv"
$Groups |
ForEach-Object {
$Name = $_.Name
$DisplayName = $_.Name
$Alias = $_.Aliases
$PrimarySmtpAddress =$_.Email
$ManagedBy = $_.Owners 
$Members = $_.Members
$Notes = $_.Description
$isArchived =$_.isArchived
If($isArchived -eq $True ){
#Write-Host "The  :$Members " 
New-DistributionGroup -Name $Name -DisplayName $DisplayName -PrimarySmtpAddress $PrimarySmtpAddress -ManagedBy $ManagedBy -Members $Members -Notes $Notes
 }
 }

当我执行脚本时,我收到有关成员的以下错误:

Je suis trop paresseux pour traduire ce message d'erreur en anglais.

(A.k.a。:L'objet "thach.vo maxime.bauche stephan.coquelet" est introuvable. Assurez-vous que vous l'avez correctement tapé ou spécifiez un autre objet.

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

错误似乎表明所有成员都作为一个大字符串传递,如果CSV中的用户被空格分隔,您可以使用PowerShell中的-split运算符将它们分成单个名称:

$Members = $_.Members -split " "

您可以轻松地将其添加到您的脚本中:

$Groups = Import-Csv -path "C:\Users\Youssef IBRAHIMI\Desktop\Script create LD Azure\groupsMM2.csv"
$Groups |
ForEach-Object {
    $Name = $_.Name
    $DisplayName = $_.Name
    $Alias = $_.Aliases
    $PrimarySmtpAddress = $_.Email
    $ManagedBy = $_.Owners
    $Members = $_.Members -split " "
    $Notes = $_.Description
    $isArchived = $_.isArchived
    If ($isArchived -eq $True)
    {
        #Write-Host "The  :$Members " 
        New-DistributionGroup -Name $Name -DisplayName $DisplayName -PrimarySmtpAddress $PrimarySmtpAddress -ManagedBy $ManagedBy -Members $Members -Notes $Notes
    }
}

这应该将$Members作为字符串数组而不是一个大的长字符串传递。

答案 1 :(得分:0)

我对列成员有另一个问题:每个成员都写在一个单独的行中。

-split之外,我使用Replace(" r n",' ') 这是我的代码:

$ManagedBy = $_.Owners    
$ManagedBy1 = $ManagedBy.Replace("`r`n",' ') 
$ManagedBy2 = $ManagedBy1 -split " "