Я не знаю о PowerShell, но вы можете сделать это в Exchange Management Shell (EMC). PowerShell v2.0 + может запускать удаленные сеансы, поэтому команды EMC можно использовать на ваших клиентах. Конечно, для этого им понадобятся некоторые права Exchange. Удобно в Exchange 2010, RBAC позволяет вам предоставлять минимальные права Exchange своим пользователям. Если это не вариант, вы можете выполнить запрос LDAP (это то, что делает Outlook), но я не уверен в точной процедуре.
Однако, если это опция:
1. Initiate your remote PowerShell session.
1a. $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://FQDNofCAS/PowerShell/ -Authentication Kerberos
1b. Import-PSSession $session
После этого попробуйте выполнить одно из следующих действий:
1. Get-GlobalAddressList
1b. Note the GAL you'll be using
2. $GAL = (Get-GlobalAddressList "Default Global Address List").DistinguishedName
2b. Replace _Default GAL_ with the output of step one.
3. Get-GlobalAddressList $GAL | Update-GlobalAddressList
4. Get-Recipinet -Filter {Addresslistmembership -eq $GAL}
4b. -Filter may require some tweaking to your specifics.
Примечание: см. http://www.msexchange.org/articles_tutorials/exchange-server-2007/management-administration/address-lists-exchange-2007-part1.html для лучшего объяснения этого.
- ИЛИ--
1. Get-User | where($_.RecipientType -like "*Mail*"}
Примечание: это покажет всех пользователей с включенной поддержкой почты, поэтому это может быть не совсем то, что вы ищете.