Applies to: Exchange Server 2010 SP2, Exchange Server 2010 SP3

Topic Last Modified: 2017-11-30

Use the Test-OutlookConnectivity cmdlet to test end-to-end Microsoft Outlook client connectivity in the Microsoft Exchange Server 2010 organization. This includes testing for Outlook Anywhere (RPC/HTTP) and TCP-based connections.

Test-OutlookConnectivity [-Identity <MailboxIdParameter>] -Protocol <HTTP | TCP | WS> [-Archive <$true | $false>] [-Confirm [<SwitchParameter>]] [-MailboxCredential <PSCredential>] [-MonitoringContext <SwitchParameter>] [-TotalTimeoutInMinutes <Int32>] [-TrustAnySslCert <SwitchParameter>] [-WhatIf [<SwitchParameter>]]
Test-OutlookConnectivity [-Identity <MailboxIdParameter>] -RpcTestType <Array | Server> [-Archive <$true | $false>] [-Confirm [<SwitchParameter>]] [-MailboxCredential <PSCredential>] [-MonitoringContext <SwitchParameter>] [-RpcAuthenticationType <Negotiate | NTLM | Kerberos>] [-RpcClientAccessServer <ClientAccessServerIdParameter>] [-RpcProxyAuthenticationType <Basic | NTLM | Negotiate>] [-RpcProxyTestType <External | Internal>] [-TotalTimeoutInMinutes <Int32>] [-TrustAnySslCert <SwitchParameter>] [-WhatIf [<SwitchParameter>]]
Test-OutlookConnectivity [-Identity <MailboxIdParameter>] -GetDefaultsFromAutodiscover <$true | $false> [-Archive <$true | $false>] [-Confirm [<SwitchParameter>]] [-MailboxCredential <PSCredential>] [-MonitoringContext <SwitchParameter>] [-RpcAuthenticationType <Negotiate | NTLM | Kerberos>] [-RpcClientAccessServer <ClientAccessServerIdParameter>] [-RpcProxyAuthenticationType <Basic | NTLM | Negotiate>] [-RpcProxyServer <ServerIdParameter>] [-TotalTimeoutInMinutes <Int32>] [-TrustAnySslCert <SwitchParameter>] [-WhatIf [<SwitchParameter>]]
Test-OutlookConnectivity [-Identity <MailboxIdParameter>] -GetDefaultsFromAutodiscover <$true | $false> -WSClientAccessServer <ClientAccessServerIdParameter> [-Archive <$true | $false>] [-Confirm [<SwitchParameter>]] [-MailboxCredential <PSCredential>] [-MonitoringContext <SwitchParameter>] [-TotalTimeoutInMinutes <Int32>] [-TrustAnySslCert <SwitchParameter>] [-WhatIf [<SwitchParameter>]]
Test-OutlookConnectivity [-Identity <MailboxIdParameter>] -WSTestType <Unknown | Internal | External> [-Archive <$true | $false>] [-Confirm [<SwitchParameter>]] [-MailboxCredential <PSCredential>] [-MonitoringContext <SwitchParameter>] [-TotalTimeoutInMinutes <Int32>] [-TrustAnySslCert <SwitchParameter>] [-WhatIf [<SwitchParameter>]]

Running the Test-OutlookConnectivity cmdlet validates a user's Outlook connection. End-to-end verification includes testing for Autodiscover connectivity, creating a user profile, and logging on to the user's primary mailbox, or primary and on-premises archive mailbox. This cmdlet can validate both types of client connections, TCP/IP and Outlook Anywhere. If the cmdlet fails, the output notes the step that failed.

You need to be assigned permissions before you can run this cmdlet. Although all parameters for this cmdlet are listed in this topic, you may not have access to some parameters if they're not included in the permissions assigned to you. To see what permissions you need, see the "Test Outlook Anywhere connectivity" entry in the Client Access Permissions topic.


Parameter Required Type Description




The Identity parameter specifies a target user mailbox. This value can be the mailbox GUID or can be the domain name\user, for example, contoso.com\erin. If the parameter isn't specified, the command looks for a test user in Active Directory. You need to create the test user with the New-TestCasConnectivityUser.ps1 script.




The GetDefaultsFromAutodiscover parameter specifies whether to get default values for all of the other parameters for the command from the Autodiscover service settings. If you run the command specifying values for other parameters, those values override the default values from the Autodiscover service. The default value for this parameter is $true.




The Protocol parameter specifies whether to test for Outlook Anywhere connectivity or directly test for RPC or TCP/IP connectivity. The value is either HTTP or TCP.




The RpcTestType parameter specifies which type of RPC endpoint the command should test. Valid values are Server or Array. If Server is specified, the command uses the local server as the RPC endpoint. If Array is specified, the command looks for a ClientAccessArray object in the same Active Directory site where the command is being run.




This parameter is reserved for internal Microsoft use.




The WSTestType parameter specifies type of servers that you want to include in your Outlook connectivity test. You can use the following values:

  • Unknown

  • Internal

  • External

  • The default value is Unknown.




The Archive parameter specifies whether tests should be performed to connect to the user’s on-premises archive mailbox. You don’t need to specify a value for this parameter.




The Confirm switch causes the command to pause processing and requires you to acknowledge what the command will do before processing continues. You don't have to specify a value with the Confirm switch.




The MailboxCredential parameter specifies certain credentials to allow logon access to a user's mailbox. Use the parameter along with the Identity parameter to access a user's mailbox when you don't have access permissions.




The MonitoringContext parameter specifies whether the command returns additional information that can be used with Microsoft System Center Operations Manager 2007. The default value is $false.




The RpcAuthenticationType parameter specifies the authentication setting to test for the RPC layer. Using this parameter is helpful if a different authentication type is set at the RPC proxy virtual directory. You can use the following values:

  • NTLM

  • Kerberos

  • Negotiate

The default value is Negotiate.




The RpcClientAccessServer parameter specifies the target server with the Client Access server role installed that you want to test. This can be a server fully qualified domain name (FQDN) or a GUID.




The RpcProxyAuthenticationType parameter specifies the authentication setting for the RPC Proxy endpoint. The value can be specified as Basic, NTLM, or Negotiate. There is no default value unless used with the GetDefaultsFromAutodiscover parameter.




The RpcProxyServer parameter specifies whether to set the target RpcProxy server for testing. This parameter can be used when the RpcProxy server is different from the Client Access server.




The RpcProxyTestType parameter specifies which HTTP endpoint the command should connect to. The value can be Internal or External. The Internal value refers to the local computer name (http://<localcomputername>, for example, http://CAS01). The External value refers to a public namespace (the external HTTP URL on the /rpc virtual directory, for example, http://mail.contoso.com).




The TotalTimeoutInMinutes parameter specifies the time limit, in minutes, for the command to wait for test results before ending the request. The default value is two minutes.




The TrustAnySslCert parameter can be set to $true to ignore any Secure Sockets Layer (SSL) certificate warnings. The default value is $false.




The WhatIf switch instructs the command to simulate the actions that it would take on the object. By using the WhatIf switch, you can view what changes would occur without having to apply any of those changes. You don't have to specify a value with the WhatIf switch.

To see the input types that this cmdlet accepts, see Cmdlet Input and Output Types. If the Input Type field for a cmdlet is blank, the cmdlet doesn’t accept input data.

To see the return types, which are also known as output types, that this cmdlet accepts, see Cmdlet Input and Output Types. If the Output Type field is blank, the cmdlet doesn’t return data.


Error Description


This example tests the most common end-to-end Outlook connectivity scenario for Outlook Anywhere. This includes testing for connectivity through the Autodiscover service, creating a user profile, and logging on to the user mailbox. All of the required values are retrieved from the Autodiscover service. Because the Identity parameter isn't specified, the command uses the temporary test user that you've created using the New-TestCasConnectivityUser.ps1 script. This example command can be run to test TCP/IP connectivity by setting the Protocol parameter to RPC.

Test-OutlookConnectivity -Protocol:HTTP -GetDefaultsFromAutoDiscover:$true

This example tests for Outlook Anywhere connectivity using the local server as the RpcProxy endpoint as well as the RPC endpoint. Because the Identity parameter isn't specified, the command uses the temporary test user that you've created using the New-TestCasConnectivityUser.ps1 script. Modify this example to use the public external URL by setting the RpcProxyTestType parameter to External. Additionally, the example command can use the Client Access server array as the RPC endpoint by setting the RpcTestType parameter to Array. To only validate TCP/IP connectivity, omit the RpcProxyTestType parameter.

Test-OutlookConnectivity -RpcProxyTestType:Internal -RpcTestType:Server

This example validates Outlook connectivity through RpcProxy on one server to a different server running the Client Access server role with Basic for the outer authentication layer and NTLM for the inner authentication layer. Using these parameters should allow you to validate most types of Outlook connectivity configurations. This command can also be used with the GetDefaultsFromAutoDiscover parameter set to $true if you only need to override one or two parameters. This following command is similar to running a connectivity test using the RPC Ping utility but provides stronger validation.

Test-OutlookConnectivity -RpcProxyServer:RpcProxySrv01 -RpcProxyAuthenticationType:Basic -RpcClientAccessServer:CAS01 -RpcAuthenticationType:NTLM