Powershell – Настраиваем отображение атрибутов в ADUC


При миграции в новый лес пришлось переносить рабочие настройки администраторов, в том числе настройки оснастки ADUC Active Domain User and Computers. В частности нужно было отобразить для учетных записей атрибуты с SIP-адресом, табельным номером и т.д. По умолчанию их нет в списке доступных для отображения через настройку View Add/Remove Columns. Чтобы нужные атрибуты появились, необходимо настроить DisplaySpecifiers.

Запускаем ADSIEDIT, открываем контейнер Configuration, контейнер DisplaySpecifiers, находим контейнер соответствующий нужному языку – английскому соответствует 409, русскому 419, затем нам нужен объект default-Display и его атрибут extraColumns, в котором перечислены все доступные для отображения атрибуты.

Причем часто пишется, что достаточно настроить default-Display, но это работает только для контейнеров по умолчанию, для созданных пользовательских OU это не работает – для них нужно править extraColumns (изначально он пустой) в organizationalUnit-Display. Но! Если вы используете в ADUC хранимые запросы Query, то для них применяются настройки из default-Display!

Подробнее можно прочитать тут и тут.

Если посмотрите атрибут extraColumns в default-Display, то увидите достаточно большой список. Переносить такое количество записей вручную трудоемко (extraColumns не суммируются!).

Как всегда на помощь приходит Powershell. Для английского языка:

$dom = «DC=domain,DC=ru»

$a = Get-ADObject -Identity «CN=default-Display,CN=409,CN=DisplaySpecifiers,CN=Configuration,$dom« -Properties extraColumns

 

$b = Get-ADObject -Identity «CN=organizationalUnit-Display,CN=409,CN=DisplaySpecifiers,CN=Configuration,$dom«

 

Set-ADObject $b -Add @{extraColumns=[array]$a.extraColumns}

 

 

Если нужно будет очистить extraColumns, то нужно сделать так:

Set-ADObject $b -Clear extraColumns

 

Теперь добавим нужные нам атрибуты:

$c= @{}

$c.extraColumns=@(’employeeID,Employee ID,0,-1,0′)

$c.extraColumns+=@(‘msRTCSIP-PrimaryUserAddress,Lync Address,0,100,0’)

$c.extraColumns+=@(«operatingSystem,Operating System,0,-1,0»)

$c.extraColumns+=@(«operatingSystemServicePack,Service Pack,0,-1,0»)

#$c.extraColumns+=»»

 

Set-ADObject $a -Add $c

Set-ADObject $b -Add $c

 

Ждем несколько минут, запускаем ADUC и добавляем для отображения нужные атрибуты.

О работе в Powershell с multivalued атрибутами можно почитать тут.

VMware or Microsoft?


Интересный пост с перечнем возможностей двух систем виртуализации  VMware or Microsoft? Comparing vSphere 5.5 and Windows Server 2012 R2 Hyper-V At-A-Glance

Раньше как не начнешь что-то читать про VMware, так “эксперты” не сколько про нее пишут, сколько Microsoft в грязи валяют. Но в последнее время читать про виртуализацию стало скучно: радостного свиста и улюлюканья со стороны армии “экспертов” что-то и не слышно – с чего бы это? Оказывается внезапно убойные “аргументы” закончились. Чем теперь займется армия “экспертов”? Вероятно посвятит свое бесценное время более актуальной проблеме – проблеме кнопки “Пуск”.

Ну а если серьезно, технологии виртуализации Microsoft сегодня покрывают потребности большей части рынка за очень скромные деньги от настольных систем до крупных датацентров и специализированных решений. Это уже реальность. Системы виртуализации VMware 4-6 летней давности вырабатывают ресурс, и даже твердые консерваторы, посчитав бюджеты, оглядевшись вокруг и увидев новую реальность, начинают заменять VMware на решения Microsoft.

Проблема с загрузкой адресной книги Lync при миграции в другой лес


При миграции учетных записей из одного леса в другой у некоторых пользователей появилась проблема: Lync клиент стал запрашивать логин и пароль, более того не работал поиск по адресной книге. (Уточнение: учетная запись пользователя переехала в новый лес, а Lync сервер остался в исходном лесе.) Когда число мигрированных пользователей перевалило за тысячу, количество обращение в тех. поддержку по этой проблеме стало слишком большим. Потребовалось решение.

Читать далее

Отключение задержки загрузки адресной книги в Lync 2013


Как-то написал про Быстрое обновление адресной книги Lync и там есть Шаг 3, который полезен для отладки – выключение отсрочки загрузки адресной книги при старте клиента Lync 2010.

В Lync 2013 можно сделать то же самое, но ветка реестра теперь другая, т.к. Lync 2013 входит в состав Office 2013:

для текущего пользователя:

reg add HKCU\Software\Policies\Microsoft\Office\15.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f

на весь компьютер:

reg add HKLM\Software\Policies\Microsoft\Office\15.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f

Комментируем вложения в Outlook при отправке письма


Сегодня мне задали неожиданный вопрос: нужно отправить в письме из Outlook несколько вложений, как сопроводить их комментариями и при этом сделать удобные ссылки на сами вложения?

Неужели такое можно сделать?

Читать далее

Powershell – выполняем скрипт еще быстрее


В прошлых статьях Powershell – параллельное выполнение операций – меняем настройки DNS и Powershell, ADMT и проверка административных шар описано как использовать параллелизм Workflow для ускорения работы скрипта.

Некоторым захочется узнать можно ли сделать ту же работу еще быстрее в рамках Powershell? Да, есть еще один интересный метод, который позволяет выполнять параллельно скрипты с максимальной скоростью.

Этот механизм Powershell называется runspaces. Я не буду ничего расписывать, потому что мне попалась статья (и прекрасный скрипт!), которая хорошо демонстрирует использование runspaces для выполнения скрипта одновременно на множестве систем Speedy Network Information Query Using PowerShell.

К этому можно еще кое-что добавить. Workflow намного проще использовать – вы это увидели, если посмотрели примеры использования Workflow и runspaces. Более того, Workflow это множество возможностей, которых нет в Powershell (помним, что Workflow это не Powershell!)

Поэтому рекомендация проста: используйте Workflow для решения администраторским задач как можно шире; если же вы столкнетесь с недостаточной скоростью Workflow и не сможете оптимизировать Workflow, то используйте runspaces для распараллеливания процессов; к тому же runspaces можно использовать в Workflow и наоборот!

Powershell, ADMT и проверка административных шар


В статье Powershell – параллельное выполнение операций – меняем настройки DNS я немного описал Workflow и как использовать это средство для выполнения параллельных операций на множестве компьютеров на примере настройки DNS.

Вот еще один пример. При миграции компьютеров с помощью ADMT важно обеспечить удаленный доступ к компьютеру с сервера миграции. Фактически используются административные шары. И ADMT имеет режим PreCheck – выполнение проверки перед запуском фактической миграции. Но запускать проверку из ADMT не совсем удобно, т.к. ошибки он покажет, но их еще надо исправить, либо исключить проблемные компьютеры из списка миграции. Поэтому лучше проверку делать заранее, исправить ошибки доступа, потом только приступать к миграции. И поможет нам в этом простой скрипт:

workflow  checkAdmShares {

 

param($computerName)

 

foreach -parallel($computer in $computerName) {

   if  (Test-Connection  -Count 2  -ErrorAction SilentlyContinue -ComputerName $computer.DNSHostName)

             { if ( Test-Path  -Path «\\$($computer.DNSHostName)\admin$» ) {«$($computer.DNSHostName) — Ok»} else {«$($computer.DNSHostName) — not path»} } else { «$($computer.DNSHostName) — not ping»}

   }

 

}

 

$comps = Get-Content C:\list.txt | % {$_.Trim()} | % { Get-ADComputer  $_ }

checkAdmShares $comps

 

За счет распараллеливания скрипт работает очень быстро даже для большого списка компьютеров.