PowerShell, адресная книга Exchange 2010 - PullRequest
1 голос
/ 18 января 2011

Можно ли получить доступ к адресной книге Exchange 2010 из скрипта PowerShell, который работает на клиенте? Я хочу получить доступ к адресной книге, искать по свойствам и работать с результатами.

Я не нашел учебника по EWS и PowerShell.

[Reflection.Assembly]::LoadFrom("path to ews.dll")


$ExchangeService = new-object ExchangeServiceBinding

$paramName = New-Object UserConfigurationNameType
$paramName.Item = New-Object FolderIdType
$paramName.Name = "CategoryList"

$params = New-Object GetUserConfigurationType
$params.UserConfigurationName = $paramName
$params.UserConfigurationProperties = [UserConfigurationPropertyType]::ALL


$ExchangeService.UseDefaultCredentials
$ExchangeService.Url = "https://path.to.exchange/EWS/Exchange.asmx"
$ExchangeService.GetUserConfiguration($params)

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Я не знаю о 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*"}  

Примечание: это покажет всех пользователей с включенной поддержкой почты, поэтому это может быть не совсем то, что вы ищете.

1 голос
/ 19 января 2011

Вам необходим управляемый API Exchange EWS:

http://msdn.microsoft.com/en-us/library/dd637749.aspx

...