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