User Tools

Site Tools


playground:microsoft_365:exchange_online:office_365_tenant_to_tenant_migrations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
playground:microsoft_365:exchange_online:office_365_tenant_to_tenant_migrations [2021/10/29 22:50] – created admintomiplayground:microsoft_365:exchange_online:office_365_tenant_to_tenant_migrations [2021/10/29 23:16] (current) – [Distribution Group Migrations] admintomi
Line 7: Line 7:
 Exporting classic distribution groups to .csv files Exporting classic distribution groups to .csv files
  
-<code> <font 11.0pt/Calibri;;inherit;;inherit>Connect-ExchangeOnline +<code> 
-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</font> +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 
 </code> </code>
  
-Exporting distribution lists members+And importing distribution lists. If importing another tenant, remember to clean onmicrosoft.com aliases and rename domains if needed.
 <code> <code>
  
-**Connect-ExchangeOnline** <font 11.0pt/Calibri;;inherit;;inherit>$objDistributionGroups Get-DistributionGroup -ResultSize Unlimited</font> <font 11.0pt/Calibri;;inherit;;inherit>Foreach ($objDistributionGroup in $objDistributionGroups)</font> <font 11.0pt/Calibri;;inherit;;inherit>{</font> <font 11.0pt/Calibri;;inherit;;inherit>write-host "Processing $($objDistributionGroup.DisplayName)..."</font> <font 11.0pt/Calibri;;inherit;;inherit>#Get members of this group</font> <font 11.0pt/Calibri;;inherit;;inherit>$objDGMembers Get-DistributionGroupMember -Identity $($objDistributionGroup.PrimarySmtpAddress)</font> <font 11.0pt/Calibri;;inherit;;inherit>write-host "Found $($objDGMembers.Count) members..."</font> <font 11.0pt/Calibri;;inherit;;inherit>Foreach ($objMember in $objDGMembers)</font> <font 11.0pt/Calibri;;inherit;;inherit>{</font> <font 11.0pt/Calibri;;inherit;;inherit>Out-File -FilePath C:\temp\exported_distgroup_members.csv -InputObject "$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)" -Encoding UTF8 -append</font> <font 11.0pt/Calibri;;inherit;;inherit>write-host "`t$($objDistributionGroup.DisplayName),$($objDistributionGroup.PrimarySMTPAddress),$($objMember.DisplayName),$($objMember.PrimarySMTPAddress),$($objMember.RecipientType)"</font> <font 11.0pt/Calibri;;inherit;;inherit>}</font> <font 11.0pt/Calibri;;inherit;;inherit>}</font> +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 
 +} 
 </code> </code>
 +
 +Exporting distribution lists members. I borrowed this from Internet. Problem is that this script does not output nice .csv file, needs to be redesigned.
 +<code>
 +
 +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
 +    }
 +}
 +
 +</code>
 +
 +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
 +
 +<code>
 +Import-Csv C:\temp\distributiongroup_importmembers.csv | foreach {
 +Add-DistributionGroupMember -Identity $_.DisplayName -Member $_.UserPrimarySMTP
 +}
 +
 +</code>
 +
 +Yet again pay attention to UPN if it needs to be changed before importing.
  
  
playground/microsoft_365/exchange_online/office_365_tenant_to_tenant_migrations.1635537050.txt.gz · Last modified: 2021/10/29 22:50 by admintomi