我想从CSV文件在Office 365中创建通讯组。
在我的CSV文件中,有一个包含多个用户的列,如此屏幕截图所示:
这是我的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.
)
任何帮助将不胜感激。
答案 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 " "