Not SQL related today but a good example of PowerShell in action.
I recently migrated my personal email over to Office 365 from Microsoft. The migration itself went very smoothly but I ran into an issue where the primary email address on the account was showing with a @sirsql.onmicrosoft.com address instead of @sirsql.net. This seriously bugged me and I couldn’t find a way to change it in the Office 365 admin interface.
After some digging I found that you could only make a change such as this using PowerShell, and that you couldn’t do it using the account you want to change (makes sense).
So I created a new admin account just for the purpose and initiated a session in Office 365 (entering the admin users credentials when prompted)
$Livecred = get-credential
$Session = new-pssession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Livecred -Authentication Basic -AllowRedirection
Import-PSSession $Session
Now I had to find the account, easy enough:
get-mailbox | where-object {$_.Identity -eq "<my account>"} | fl
This gave me all the details, including the PrimarySmtpAddress
As you can see from the membership properties you can get and set this information, so that’s what I went to do:
set-mailbox <my account> -PrimarySmtpAddress <my account>@sirsql.net
And got an error
A positional parameter cannot be found that accepts argument ‘-PrimarySmtpAddress’.
+ CategoryInfo : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Set-Mailbox
Well this made no sense. No matter what I tried I could not do anything other than a get on the PrimarySmtpAddress. Back to the searching and I discovered that Microsoft have not provided the capability to run a set on that particular member object in Office 365 (although it’s available with Exchange). Way to do with that Microsoft.
After some more digging I was able to get the SMTP address changed by setting the WindowsEmailAddress to the correct value
set-mailbox <my account> -WindowsEmailAddress <my account>@sirsql.net
One other note, when using PowerShell to manage O365 and it says to use Identity use the Alias for the account instead or you might up with unintended consequences.