I have a two Office 365 tenant accounts, with one on-premise Exchange organization. Currently two companies share the same on-premise Exchange organization. As part of moving mailboxes to the cloud, we are separating the companies by moving them to their own Office 365 tenant account. This brings us numerous problems and different functionality, with one major limitation is a split GAL. PowerShell can assist us.
- I need to get a list of all possible properties for the Get-Mailbox cmdlet.
Get-Mailbox -identity user@domain.com.au | fl
This will display all the possible fields that we can use to do a custom search.
- I want to use the PrimarySmtpAddress field and do a custom search for email addresses like *@domain.com
Get-Mailbox | Where-Object {$_.PrimarySmtpAddress –like "*@domain.com"}
See Using the Where-Object Cmdlet for more information on the Where-Object Cmdlet.
This command above will display all users with a PrimarySmtpAddress with @domain.com. However this isn’t enough information, I need contact information, e.g. address and phone numbers. The Get-Mailbox cmdlet is the wrong command to use in this instance.
- I will need to export the information from the actual user account itself, so I can include the mobile and telephoneNumber properties along with other properties.Run the following in company A’s on-premise Active Directory using using a domain controller and the Active Directory PowerShell module.
Import-Module activedirectory
Get-ADUser –identity <alias> –Properties *
This will display all possible properties for my user account so we know what we need to use. However, I only want users with a @domain.com EmailAddress. I also want specific properties exported to a CSV file.
- I will need to run the following command to export a list of users from Active Directory with an email address that ends with @domain.com
Get-ADUser -Filter 'EmailAddress -like "*@domain.com"' -Properties * | Select-Object -Property Name,DisplayName,Title,EmailAddress,GivenName,sn,Initials,StreetAddress,Office,City,State,PostalCode,Country,OfficePhone,Company,HomePhone,mobile,Department | Sort-Object -Property Name | export-csv .\UserPropertiesCSV.csv
We are using 3 cmdlet’s here in this blog post, Get-ADUser, New-MailContact & Set-Contact. The table below shows the similarities between the properties for each cmdlet.
Get-ADUser |
New-MailContact |
Set-Contact |
City | City | |
Company | Company | |
Country | CountryOrRegion | |
Department | Department | |
DisplayName | DisplayName | |
EmailAddress | ExternalEmailAddress | |
GivenName | FirstName | |
HomePhone | HomePhone | |
Initials | Initials | |
Mobile | MobilePhone | |
Name | Name | Name |
Office | Office | |
OfficePhone | Phone | |
PostalCode | PostalCode | |
sn | LastName | |
State | StateorProvince | |
StreetAddress | StreetAddress | |
Title | Title |
- Using company B’s tenant account, connect to remote PowerShell on a separate server to where you extracted company A’s user data.
Import-module msonline $LiveCred=Get-Credential Connect-MsolService –Credential $LiveCred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ –Credential $LiveCred -Authentication Basic –AllowRedirection
Import-PSSession $Session (If you get an error with this cmdlet, run this Set-ExecutionPolicy Unrestricted)
- Import contacts using the company A information from the CSV file using the New-MailContact cmdlet:
Import-Csv .\UserPropertiesCSV.csv|%{New-MailContact -Name $_.Name -DisplayName $_.DisplayName -ExternalEmailAddress $_.EmailAddress -FirstName $_.GivenName -LastName $_.sn}
Set the extended properties for each contact in the CSV by using the Set-Contact cmdlet:
$Contacts = Import-CSV .\UserPropertiesCSV.csv $contacts | ForEach {Set-Contact $_.Name -StreetAddress $_.StreetAddress -City $_.City -StateorProvince $_.State -PostalCode $_.PostalCode –CountryOrRegion $_.Country -Phone $_.OfficePhone -MobilePhone $_.Mobile -HomePhone $_.HomePhone -Company $_.Company -Title $_.Title -Department $_.Department -Initials $_.Initials -Office $_.Office}
Hello There. I found your blog the usage of msn. That is a very smartly written article.
I will be sure to bookmark it and come back to learn extra of
your helpful information. Thank you for the post.
I’ll definitely return.