I've done the following script in Exchange PowerShell to add more than 1 new distribution groups in exchenge by powershell and add multiple members in them, all at once:
# bulk_DistributionGroup1.ps1
# Connessione al server Exchange con remote PowerShell
Set-ExecutionPolicy RemoteSigned
$userCredential = Get-Credential -credential com_spoleto\rossetti.admin
$session = New-PSSession `
-ConfigurationName Microsoft.Exchange `
-ConnectionUri http://srvexch13.comune.spoleto.local/PowerShell/ `
-Authentication Kerberos `
-Credential $userCredential `
-AllowRedirection
Import-PSSession $session -AllowClobber -DisableNameChecking
# Importa il modulo active directory per usare comandi AD
Import-Module activedirectory
# Memorizzo i dati da bulk_DistributionGroup1.csv nella variabile $adDistGroup
$adDistGroup = Import-csv "E:\BATCH\Bulk_AD_MX\bulk_DistributionGroup1.csv"
# Memorizzo i dati da bulk_DistributionGroupmember1.csv nella variabile $adDistGroupMember
$adDistGroupMember = Import-csv "E:\BATCH\Bulk_AD_MX\bulk_DistributionGroupMember1.csv"
#Ciclo ogni riga che contiene i dettagli di un gruppo di distribuzione nel file CSV
$members = ""
foreach ($adGroup in $adDistGroup)
{
foreach ($member in $adDistGroupMember)
{
if ($adGroup.name -eq $member.groupName)
{
$members = $members + ", " + """" + $member.member + """"
}
}
$members = $members.Substring(2)
New-DistributionGroup `
-Name $adGroup.name `
-Alias $adGroup.alias `
-CopyOwnerToMember `
-ManagedBy $adGroup.managedBy `
-MemberDepartRestriction closed `
-MemberJoinRestriction closed `
-Members ${members} `
-ModerationEnabled $false `
-OrganizationalUnit $adGroup.OU `
-PrimarySmtpAddress $adGroup.primarySMTPAddress `
-Type $adGroup.type
$members = ""
}
# Rimuovo la sessione Exchange
Remove-PSSession $session
Set-ExecutionPolicy Unrestricted
and two .csv files one for passing values to the script (view the attached screenshot), but my script doesn't work returning the following error:
PS C:\WINDOWS\system32> E:\BATCH\Bulk_AD_MX\bulk_DistributionGroup1.ps1
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 1.0 tmp_gwg10zng.lky {Add-ADPermission, Add-AvailabilityAddressSpace, Add-ContentFilterPhrase, Add-DatabaseAvailabilityGroupServer...}
Impossibile trovare il destinatario ""name1.surname1", "name2.surname2"". Assicurarsi che non siano presenti errori di digitazione o specificare un oggetto diverso.
+ CategoryInfo : NotSpecified: (:) [New-DistributionGroup], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : [Server=SRVEXCH13,RequestId=50679cad-e892-476e-a08c-f4e38475b793,TimeStamp=12/08/2021 07:24:56] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] 3CCBFD1E,Microsoft.Exchange.Management.RecipientTasks.NewDistributionGroup
+ PSComputerName : srvexch13.xxxxxx.yyyyyyy.local
Impossibile trovare il destinatario ""name3.surname3", "name4.surname4"". Assicurarsi che non siano presenti errori di digitazione o specificare un oggetto diverso.
+ CategoryInfo : NotSpecified: (:) [New-DistributionGroup], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : [Server=SRVEXCH13,RequestId=2ddfac63-b7be-48b4-b076-083d54dc78af,TimeStamp=12/08/2021 07:24:56] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] EC351391,Microsoft.Exchange.Management.RecipientTasks.NewDistributionGroup
+ PSComputerName : srvexch13.xxxxxx.yyyyyyy.local
I there is anyone can help me please?
Change $members
to be an array of member names, instead of a single string:
# define array
$members = @()
foreach ($adGroup in $adDistGroup)
{
foreach ($member in $adDistGroupMember)
{
if ($adGroup.name -eq $member.groupName)
{
# add matching member names to the array
$members += $member.member
}
}
New-DistributionGroup `
-Name $adGroup.name `
-Alias $adGroup.alias `
-CopyOwnerToMember `
-ManagedBy $adGroup.managedBy `
-MemberDepartRestriction closed `
-MemberJoinRestriction closed `
-Members ${members} `
-ModerationEnabled $false `
-OrganizationalUnit $adGroup.OU `
-PrimarySmtpAddress $adGroup.primarySMTPAddress `
-Type $adGroup.type
# Clear array by creating a new empty one
$members = @()
}