Office 365 Tenant to tenant migrations
This page is collection of powershell “oneliners” that I've used to migrate items from Office 365 tenant to another
Distribution Group Migrations
Exporting classic distribution groups to .csv files
Connect-ExchangeOnline Get-DistributionGroup -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress,@{Name="EmailAddresses";Expression={$_.EmailAddresses | Where-Object {$_ -clike "smtp*"}}},RequireSenderAuthenticationEnabled | Export-Csv -Encoding UTF8 -NoTypeInformation C:\temp\exported_distributionlists.csv
And importing distribution lists. If importing another tenant, remember to clean onmicrosoft.com aliases and rename domains if needed.
Import-Csv C:\temp\distribution_list_export.csv | foreach { $proxyaddresses = $_.EmailAddresses -split ' ' $managers = $_.ManagedBy -split ' ' New-DistributionGroup -Name $_.DisplayName -ManagedBy $managers -PrimarySmtpAddress $_.PrimarySmtpAddress -RequireSenderAuthenticationEnabled $_.RequireSenderAuthenticationEnabled -WhatIf Set-DistributionGroup -Identity $_.DisplayName -EmailAddresses @{add= $proxyaddresses} -WhatIf }
Exporting distribution lists members. I borrowed this from Internet. Problem is that this script does not output nice .csv file, needs to be redesigned.
Connect-ExchangeOnline $objDistributionGroups = Get-DistributionGroup -ResultSize Unlimited Foreach ($objDistributionGroup in $objDistributionGroups) { write-host "Processing $($objDistributionGroup.DisplayName)..." #Get members of this group $objDGMembers = Get-DistributionGroupMember -Identity $($objDistributionGroup.PrimarySmtpAddress) write-host "Found $($objDGMembers.Count) members..." #Iterate through each member Foreach ($objMember in $objDGMembers) { Out-File -FilePath C:\temp\exported_distributiongroup_members.csv -InputObject "$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)" -Encoding UTF8 -append } }
Lets say you add headers to file produced on previous script for example “DisplayName,PrimarySMTPAddress,User,UserPrimarySMTP,Mailboxtype” (Add first line on file)
You can import members to new tenant with following command
Import-Csv C:\temp\distributiongroup_importmembers.csv | foreach { Add-DistributionGroupMember -Identity $_.DisplayName -Member $_.UserPrimarySMTP }
Yet again pay attention to UPN if it needs to be changed before importing.