Knowledge Base

How to connect to an Exchange server via PowerShell


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


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:


    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 depending on your target mail server:

    • If you're connecting to Exchange Server 2010, 2013, 2016, and 2019:

      $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.


      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.

    • If you're connecting to Exchange Online (Office 365):

      $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -Credential $LiveCred -Authentication Basic -AllowRedirection

      If your organization runs Office 365 Germany, execute this command instead:

      $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -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


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 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: