How to get all users form Exchange with EWS

三世轮回 提交于 2019-12-02 04:57:27

On Exchange 2013 and above you can use the FindPeople operation with the GUID of the address list you want to access (eg for the Global Address List you use the GAL's guid).

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Header>
        <RequestServerVersion Version="Exchange2013_SP1" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
      </soap:Header>
      <soap:Body>
        <FindPeople xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
          <IndexedPageItemView MaxEntriesReturned="100" Offset="0" BasePoint="Beginning" />
          <ParentFolderId>
            <AddressListId Id="5c90c254-2463-4256-bf52-60d82e6baa44" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
          </ParentFolderId>
        </FindPeople>
      </soap:Body>
    </soap:Envelope>

You can then page the results back using the Offset

The one catch with this is you can't get the GUID you need using EWS you need to use the Get-GlobalAddressList cmdlet https://technet.microsoft.com/en-us/library/aa996579(v=exchg.160).aspx in Exchange Management Shell which will return the GUID you need for the request.

Cheers Glen

In response to some of your comments:

A good way to work with Exchange 2010 (And this method works here in my network, where we run E2010) is through interactive Powershell sessions with your hub exchange server that has Exchange Management Tools installed, running powershell version 2.0.

The goal is as follows:

  1. Create a new interactive session with New-PSSession
  2. Import that session to make the remote cmdlets native to your local host.

.

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://YOURFQDNOFTHEEXCHANGESERVERHERE/powershell
Import-PSSession $session | out-null

Then you will be able to use things (cmdlets) available to Exchange Management Shell/EMC as if you were remotely logged into the exchange server itself.

This method was extracted directly from the Exchange Management Tools installation directory itself, which is how the Exchange Management Shell actually imports the modules/functions/extended cmdlet functionality to the regular powershell host.

From that point forward, I'd highly recommend for you to google/search Exchange 2010 powershell commandlets, as they are extremely useful and powerful (no pun intended) tools to help manage AD objects, Exchange objects, etc.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!