eomeroff
eomeroff

Reputation: 9915

How to get all users from Exchange with EWS

I would like to get all users from xchange server with EWS. I have figured out how to get all rooms and all appointments. But I specifically need all users thus I can CRUD users from my application. Is this even possible? I did not find any example online. Please advise on how to achieve this.

How would soap request look for user CRUD operations?

Upvotes: 1

Views: 1824

Answers (2)

Chris Kuperstein
Chris Kuperstein

Reputation: 678

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.

Upvotes: 1

Glen Scales
Glen Scales

Reputation: 22032

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

Upvotes: 3

Related Questions