CodeTwo Base.title

How to connect to Exchange servers via PowerShell

Problem:

You want to set up a remote session to an Exchange server via PowerShell.

Solution:

This article will help you:

Connecting to Exchange server

  1. Check the requirements for:
  2. Run ps Windows PowerShell.
  3. Check your Execution policy settings:

    Get-ExecutionPolicy

    If the execution policy is set to Restricted, change it to RemoteSigned or Unrestricted (this might need to be executed from PowerShell in the Run as administrator mode):

    Set-ExecutionPolicy RemoteSigned
  4. Provide the target server administrator credentials:

    $LiveCred = Get-Credential
  5. Configure the connection:

    • in the case of connecting to Exchange Server 2010, 2013, 2016:

      $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://<target-server-address>/powershell/ -Credential $LiveCred

      Be advised the method shown above is not universal. Depending on your target environment configuration, you may be required to specify the authentication method as an argument (-Authentication Kerberos), connect via http instead of https, etc., as shown in the example below:

      $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<target-server-address>/powershell/ -Credential $LiveCred -Authentication Kerberos

      What is more, some options cannot be passed as New-PSSession arguments and must be specified as New-PSSessionOption, and only then passed together as a variable. See the Troubleshooting section below to see an example of using advanced option for a session.

      Info

      If you cannot use a hostname or FQDN as a target for PowerShell connection and must use an IP address instead, see this article first.

    • in the case of connecting to Exchange Online (Office 365):

      $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
  6. Start the connection:

    Import-PSSession $Session
  7. To disconnect, type:

    Remove-PSSession $Session

Also, if you are logged in directly to an on-premises Exchange server and for some reason cannot run ems Exchange Management Shell, you can start ps Windows PowerShell and load the Exchange snap-in from there by executing the cmdlet below:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

Troubleshooting

  • Incorrect credentials

When connecting to an on-premises Exchange server, you might see the following error:

Connecting to remote server <ServerName> failed with the following error message : The user name or password is incorrect. 

This error message is self-explanatory – you need to make sure that the entered credentials are correct. A similar problem occurs when connecting to Exchange Online. This time the error message is not that informative:

Connecting to remote server ps.outlook.com failed with the following error message : [ClientAccessServer=XXXXX,BackEndServer=YYYYY,RequestId=ZZZZZ, TimeStamp=MM/DD/YYYY H:MM:SS PM] Access Denied

In such a case you should also double-check if there aren't any spelling mistakes in the provided credentials.

  • Problems with certificates

If you encounter errors specified below (or similar), you will not be able to establish a remote connection using the method described earlier in this article.

Connecting to remote server <ServerName> failed with the following error message : The server certificate on the destination computer <ServerName> has the following errors:
The SSL certificate is signed by and unknown certificate authority.
The SSL certificate contains a common name (CN) that does not match the hostname.

However, you can use the New-PSSessionOption cmdlet to ignore the validation of certificate-related operations:

$SessionOpt = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true -SkipRevocationCheck:$true
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://<target-server-address>/powershell/ -Credential $LiveCred -SessionOption $SessionOpt

The above-mentioned errors will not appear and you should be able to create a new session.

See also:

Our Clients: