Войти

Показать полную графическую версию : Set-AddressBookList не удается выполнить


tarasov.evgeny
07-04-2015, 15:34
Добрый день,

Необходимо поменять местами значения параметра AddressLists в команде Get-AddressListPolicy.
Там идёт список Группы рассылок, Организация Пользователи. Из-за чего в клиенте Outlook адресная книга всегда открывается на группе рассылок. А надо, чтобы были по-умолчанию открывались Пользователи.
Нашел пример,
Set-AddressBookPolicy -Identity GovernmentAgencyA -AddressLists @{Remove="GovernmentAgencyA-ALL","GovernmentAgencyB-All";Add="GovernmentAgencyA-Atlanta","GovernmentAgencyA-Moscow"}
Получаю ответ:
Cannot process argument transformation on parameter 'AddressLists'. Cannot convert value
"System.Collections.Hashtable" to type "Microsoft.Exchange.Configuration.Tasks.AddressListIdParameter[]". Error:

В другом примере предлагается сделать так:
$Addresslists = (Get-AddressBookPolicy -Identity <Name of AddressbookPolicy>).Addresslists | Select-Object Name -ExpandProperty Name
Set-AddressBookPolicy -Identity <Name of AddressbookPolicy> -AddressLists $Addresslists

Первая команда говорит, что:
Select-Object : Property "Name" cannot be found.
И соответственно, тоже не работает

Kazun
07-04-2015, 15:42
| Select-Object Name -ExpandProperty Name заменить на | Select-Object -ExpandProperty Name

tarasov.evgeny
07-04-2015, 16:46
$Addresslists = (Get-AddressBookPolicy -Identity Test).Addresslists | Select-Object -ExpandProperty Name
ошибка такая же

Kazun
07-04-2015, 16:58
Команды возвращают какие данные?


Get-AddressBookPolicy -Identity Test
(Get-AddressBookPolicy -Identity Test).Addresslists

tarasov.evgeny
07-04-2015, 17:15
Первая:
Name GlobalAddressList AddressLists OfflineAddressBook RoomList
---- ----------------- ------------ ------------------ --------
Test \Test_GAL {\Тест Г... \DP_OAB \Тест Ре...

Вторая:
\Тест Группы рассылки
\Тест Пользователи

Kazun
07-04-2015, 17:16
$Addresslists = (Get-AddressBookPolicy -Identity <Name of AddressbookPolicy>).Addresslists
Set-AddressBookPolicy -Identity <Name of AddressbookPolicy> -AddressLists $Addresslists

tarasov.evgeny
07-04-2015, 17:24
Выполняется

Kazun
07-04-2015, 19:17
$Addresslists = @()
$Addresslists += Get-AddressList "\Тест Пользователи"
$Addresslists += Get-AddressList "\Тест Группы рассылки"

Set-AddressBookPolicy -Identity <Name of AddressbookPolicy> -AddressLists $Addresslists

tarasov.evgeny
08-04-2015, 08:50
В последней ошибка:
Cannot process argument transformation on parameter 'AddressLists'. Cannot convert value
"System.Collections.ArrayList" to type "Microsoft.Exchange.Configuration.Tasks.AddressListIdParameter[]". Error:
"Cannot convert value "\Тест Пользователи" to type
"Microsoft.Exchange.Configuration.Tasks.AddressListIdParameter". Error: "Cannot convert hashtable to an object o

Kazun
08-04-2015, 09:37
[PS] C:\Windows\system32> (Get-AddressBookPolicy "contoso.com_ABP").AddressLists.Name
contoso.com_AL

[PS] C:\Windows\system32>Get-AddressList contoso.com* | Select Name,DisplayName

Name DisplayName
---- -----------
contoso.com users contoso.com users
contoso.com_AL contoso.com_AL
contoso.com_Rooms contoso.com_Rooms

$Addresslists = @()
$Addresslists += Get-AddressList "\contoso.com users"
$Addresslists += Get-AddressList "\contoso.com_AL"



Set-AddressBookPolicy -Identity "contoso.com_ABP" -AddressLists $Addresslists

http://s8.postimg.org/rhl354d05/image.jpg

tarasov.evgeny
08-04-2015, 11:15
Верю, но у меня не работает.
Попробовал создать по новый New-AddressBookPolicy.
Команда отработала, но порядок тоже не верный (сначала идёт группа рассылок, а затем Пользователи)
Два наблюдения:

Tест Пользователи
Тест Группы рассылки
Начинаются на разную букву Т. Для пользователи это английская буква Т, для Группы рассылок русская
Когда я добавлял данные я в переменную, я конечно это учитывал

Второе.
(Get-AddressBookPolicy "Test").AddressLists - выдает две строчки:
\Тест Группы рассылки
\Тест Пользователи
А вот команда
(Get-AddressBookPolicy "Test").AddressLists.Name
Ничего не отображает.

Kazun
08-04-2015, 12:15
Да, тут моя ошибка, сортировка в данной случае не влияет, что будет первым. Надо смотреть поле - DisplayName , добавьте спец.знак вперед, например - #


Get-AddressList "contoso.com_1" | Set-AddressList -DisplayName "#contoso.com_1"

[PS] C:\Windows\system32>(Get-AddressBookPolicy).AddressLists.Name
contoso.com_2
contoso.com_1

http://s4.postimg.org/wqlwtgpe1/image.jpg

tarasov.evgeny
09-04-2015, 08:44
То есть порядок по алфавиту? Да похоже, на правду. Но раньше же почему то было именно так как нужно: сначала Пользователи, затем Группа рассылки.
Не факт что это связанно, но это случилось вместе с переездом с 2010 на 2013.
Как думаете, ещё кроме DisplayName, что то может влиять на порядок сортировки?

Kazun
09-04-2015, 09:43
Кроме вариантов с DisplayName не знаю, т.к. сортировка идет на уровне Active Directory, а там используется функция CompareStringW - Handling Sorting in Your Applications (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318144(v=vs.85).aspx) .

Для вашего примера:

Вариант где все буквы русские в DisplayName

http://s10.postimg.org/4rcy6gsx5/rus.jpg

Вариант где у Пользователей изменена буква Т на английскую (только в атрибуте DisplayName)

http://s3.postimg.org/msk0uocmr/eng.jpg

И как это выглядит в AD:

http://s1.postimg.org/nnt3z8lsf/image.jpg




© OSzone.net 2001-2012