Custom context commands in AD Users and Computers
5 Aug 2011 #windowsМожно добавить свои комманды в меню по правой кнопке мышки для консольки AD Users and Computers:
В примере покажу Ping для Компьютеров и Unlock для Пользователей:
-
Открываем adsiedit.msc и переходим в раздел:
CN=user-Display, CN=409, CN=DisplaySpecifiers, CN=Configuration, DC=domain, DC=ru
Здесь409
- для английского языка системы,419
- для русского.
Часть domain.ru - конечно тоже у всех своя) -
Дважды кликаем на user-Display а затем на adminContextMenu
-
Добавляем
4,Unlock,c:\Windows\SYSVOL\sysvol\domain.ru\scripts\unlockUser.vbs
здесь поля разделенные запятыми:- номер сверху, под которым пункт будет отображаться в меню
- название пункта, можно использовать & для указания hotkey
- путь к скрипту, можно указывать и UNC
-
Открываем такой же атрибут для параметра:
CN=computer-Display, CN=409, CN=DisplaySpecifiers, CN=Configuration, DC=domain, DC=ru
и добавляем:
5,Ping,c:\Windows\SYSVOL\sysvol\domain.ru\scripts\ping.cmd
-
Теперь дело за самими скриптами. Здесь для примера используется обработка параметров вызова для vbs и cmd. Путь по которому лежат скрипты реплицируется на все контроллеры домена, а вот если вы будете открывать консоль ADUC с локального компа, например через RSAT, то скрипты обнаружены не будут. Если вам необходимо такое использование, то можно положить скрипты в шару, или в
\\domain.ru\sysvol\domain.ru\scripts\
Но тогда при каждом запуске вы будете получать сообщение
Которое я не смог побороть ( -
Сохраняем скрипт
unlockUser.vbs
:Const E_ADS_PROPERTY_NOT_FOUND = -2147463155 Set wshArguments = WScript.Arguments Set objUser = GetObject(wshArguments(0)) If IsLockedOut(objUser) Then objUser.Put "lockouttime","0" objUser.SetInfo MsgBox "The user has been unlocked - " & objUser.sAMAccountName Else MsgBox "The user account is not locked - " & objUser.sAMAccountName End If Function IsLockedOut(objUser) on Error resume next Set objLockout = objUser.get("lockouttime") if Err.Number = E_ADS_PROPERTY_NOT_FOUND then IsLockedOut = False Exit Function End If On Error GoTo 0 if objLockout.lowpart = 0 And objLockout.highpart = 0 Then IsLockedOut = False Else IsLockedOut = True End If End Function
-
Сохраняем скрипт
ping.cmd
:ping %2 -t
(будет идти бесконечный пинг, закрытие окна по Ctrl-C)
-
Открываем консоль ADUC и проверяем :)