I use the following function in my PowerShell profile so that I can use the Microsoft Online cmdlets, the Exchange cmdlets against Exchange online and the Exchange cmdlets against on-premises all in one session...
Firstly - If you are unsure how to create your PowerShell profile, you can do the following (from a PowerShell session) :
Test-Path$profile
If the results are FALSE, then you need to create your profile :
New-item–typefile–force$profile
To modify your existing profile, or edit it after you've created it :
ii$profile
Now on to the function (paste this into your $profile) :
if (!(get-moduleMSONLINE)) {import-moduleMSONLINE}
FunctionConnect-Office365
{
[CmdletBinding()]
param
(
[Parameter(Mandatory =$False)]
[System.Management.Automation.PsCredential]$Credential=$Host.UI.PromptForCredential("Enter MSOL Admin Credential",
"Enter the username and password of an MSOnline Administrator account.","","userCreds"),
[Parameter(Mandatory =$False)]
[System.Uri]$Uri="https://ps.outlook.com/powershell/"
)
connect-msolservice-credential$credential
$session=New-PSSession-ConfigurationNameMicrosoft.Exchange-ConnectionUri$Uri-Credential$Credential-Authentication"Basic"-AllowRedirection
Import-PSSession$session-prefixEXO-AllowClobber
Return$session
}
It's important to note that if you run this on a system that doesn't have the Exchange Management Shell (i.e. Your Exchange Server) or the Exchange ps-snapin loaded, you will only have Azure and Exchange Online in your session. Making this function part of your profile on an Exchange server will allow you to have all 3 (or loading the Exchange ps-snapin on your system).
It's also important to note that I use the -prefixEXO switch for the ps-session command, so that all the Exchange Online cmdlets (e.g. get-mailbox) will need to be prefixed with EXO (e.g. get-EXOmailbox) while the on-premises Exchange cmdlets (e.g. get-mailbox) will stay the same.
Lastly, if you find that you need to use a proxy server, you can add the following line before the $session=New-PSSession line :
$proxysettings=New-PSSessionOption-ProxyAccessTypeIEConfig
And add the following to the end of the $session=New-PSSession line :
-SessionOption$proxysettings
To use this new function, just launch PowerShell and type Connect-Office365, you will be prompted for your tenant credentials and will be connected to Azure and Exchange Online.