![]() |
Открытие окна свойства УЗ
Добрый день!
Для поиска учётной записи используется оснастка "Active Directory -- Пользователи и группы", через кнопку найти (меню Действие-Найти...). При двойном клике по найденной записи или вызове пункта контекстного меню "Свойства" появляется диалог свойств учётной записи. Можно ли автоматизировать действие поиска, таким образом, чтобы скрипт (не важно на чём: PowerShell, VBS и т.д. В принципе могу и на каком-нибудь языке написать программу) вызывал окно свойств к отдельной учётке? После неудачных поисков, решил что можно сделать через MMC Automation Object Model, но из-за скудности примеров пока испытываю трудности, да и не совсем уверен что это лучший путь. Система: Windows 7 x64 Ent Буду рад любым мыслям и наводкам по данному вопросу. |
Aynyuh, ну, а если будет найдено несколько подходящих объектов?
И — смысл?! Лишний щёлчок мышки убрать? |
Это уже зависит от параметров поиска. В принципе, в скрипт можно передавать уникальный параметр -- имя пользователя. Что делать с результатами я уже, думаю, смогу разобраться, мне бы понять как вызвать диалог свойств для какого-либо объекта это оснастки...
Но это же не один щелчёк. К тому же ещё приходится вводить вручную (или копировать) данные пользователя. Каждый раз приходится запускать оснастку, запускать поиск, вводить логин пользователя или фамилию/имя. Я согласен делать эти операции при нестандартном поиске, но в 99% поиск однообразен и включает в себя все эти шаги. Напрягает, когда приходится это делать помногу раз на дню. |
Как вызвать свойства для определенной учетной записи на PowerShell:
Код:
$path = "contoso.com/Human Resources/Human Resources Users" -split "/" |
Kazun, это прекрасно!
Хотя бы становится понятно каким образом можно с этим работать. Подскажите, должны ли быть установлены какие-то компоненты чтобы этот скрипт работал? При запуске пишет: Код:
New-Object : Сбой при получении производства объектов класса COM для компонента с CLSID {49B2791A-B1AE-4C90-9B8E-E860BA07F8 89} в результате следующей ошибки: 800702e4. C:\Users\denis\AppData\Local\Temp\0768b3c6-a38e-4dca-85ac-8e47b47580c5.ps1:5 знак:18 + $mmc = New-Object <<<< -ComObject MMC20.Application + CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand |
Требуется повышение привилегий(для запуска PowerShell - Run As Administrator).
Я думаю для вашей задачи лучше использовать командлеты -http://www.quest.com/powershell/activeroles-server.aspx или использовать командлеты в RSAT для управления AD. Это гораздо облегчит работу. |
Kazun, к сожалению командлеты тут не нужны, т.к. ничего конкретного с учётной записью проделывать не нужно.
Благодаря вашему примеру мне стало понятно как работать с консолью MMC, и вот что у меня получилось: Код:
Option Explicit Проблема в том, что окно свойств появляется ЗА окном программы, которая его вызывает. А также, если после метода ExecuteSelectionMenuItem не показывать сообщение или не делать Wait секунды на 3-5, то окно свойств не появляется вообще. Каким образом можно заставить появляться его на первом плане? |
Пока что вышел из ситуации таким образом. Скрипт в зависимости от локализации системы (русская или английская) пытается активировать окно свойств, передавая заголовок окна, до тех пор пока данное окно не активируется, либо цикл не отработает 11 раз:
Код:
For i = 0 To 10 |
Aynyuh, пара советов по коду сценария из сообщения #7.
1. В функции DistinguishedToPath() нет необходимости, т.к. значение, которое Вы называете "обычный путь",- это значение атрибута Canonical-Name. Его легко получить непосредственно в ADO-запросе. Пример: Код:
Const C_OUT_FIELDS = "samAccountName,displayName,distinguishedName,canonicalName;" Пример: Код:
Set objRootDSE = GetObject("LDAP://RootDSE") |
Время: 11:19. |
Время: 11:19.
© OSzone.net 2001-