Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Set-AddressBookList не удается выполнить (http://forum.oszone.net/showthread.php?t=298050)

tarasov.evgeny 07-04-2015 15:34 2492721

Set-AddressBookList не удается выполнить
 
Добрый день,

Необходимо поменять местами значения параметра 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 2492726

| Select-Object Name -ExpandProperty Name заменить на | Select-Object -ExpandProperty Name

tarasov.evgeny 07-04-2015 16:46 2492750

Код:

$Addresslists = (Get-AddressBookPolicy -Identity Test).Addresslists | Select-Object -ExpandProperty Name
ошибка такая же

Kazun 07-04-2015 16:58 2492757

Команды возвращают какие данные?
  1. Get-AddressBookPolicy -Identity Test
  2. (Get-AddressBookPolicy -Identity Test).Addresslists

tarasov.evgeny 07-04-2015 17:15 2492765

Первая:
Код:

Name                    GlobalAddressList      AddressLists            OfflineAddressBook      RoomList
----                    -----------------      ------------            ------------------      --------
Test                    \Test_GAL                  {\Тест Г...                \DP_OAB                \Тест Ре...

Вторая:
Код:

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


Kazun 07-04-2015 17:16 2492767

Код:

$Addresslists = (Get-AddressBookPolicy -Identity <Name of AddressbookPolicy>).Addresslists
Set-AddressBookPolicy -Identity <Name of AddressbookPolicy> -AddressLists $Addresslists


tarasov.evgeny 07-04-2015 17:24 2492770

Выполняется

Kazun 07-04-2015 19:17 2492816

Код:

$Addresslists = @()
$Addresslists += Get-AddressList "\Тест Пользователи"
$Addresslists += Get-AddressList "\Тест Группы рассылки"

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


tarasov.evgeny 08-04-2015 08:50 2493070

В последней ошибка:
Код:

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 2493086

Код:

[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


tarasov.evgeny 08-04-2015 11:15 2493118

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

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

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

Kazun 08-04-2015 12:15 2493140

Да, тут моя ошибка, сортировка в данной случае не влияет, что будет первым. Надо смотреть поле - 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


tarasov.evgeny 09-04-2015 08:44 2493514

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

Kazun 09-04-2015 09:43 2493534

Кроме вариантов с DisplayName не знаю, т.к. сортировка идет на уровне Active Directory, а там используется функция CompareStringW - Handling Sorting in Your Applications .

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

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



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



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



Время: 21:25.

Время: 21:25.
© OSzone.net 2001-