Как узнать имя пользователя за компьютером?

Иногда необходимо узнать какой пользователь домена работает за компьютером, а иногда и наоборот необходимо узнать за какими компьютерами в домене работает пользователь (или просто получить список пользователей работающих на Пк в домене). Для этого дела у меня есть два небольших скрипта: Скрипт № 1:  получение имени пользователя работающего на компьютере в домене strComputer = «computername» Set objWMIService = GetObject(«winmgmts:\\» & strComputer & «\root\CIMV2») Set colItems = objWMIService.ExecQuery( _ «SELECT * FROM Win32_ComputerSystem»,,48) For Each objItem in colItems Wscript.Echo «UserName: » & objItem.UserName Next Этот скрипт выдаст логин с которым работает пользователь на указанном компьютере. Если нужен не только логин, но и DN , то можно скомбинировать его с примером из предыдущего поста:  Список пользователей в группе AD.

Список пользователей в группе AD

Понадобилось сегодня срочно сделать отчет по пользователям которые включены в одну специфическую группу OU  в домене AD. Готового под рукой ничего не было, поэтому я раздербанил несколько старых скриптов и соорудил один рабочий: On Error Resume Next Set objGroup = GetObject («LDAP://cn=X_Users,ou=Security — Groups,dc=blabla,dc=bla,dc=ru») objGroup.GetInfo arrMemberOf = objGroup.GetEx(«member») For Each strMember in arrMemberOf Set objUser = GetObject(«LDAP://» & strMember) WScript.echo objUser.samaccountname & «;» & objUser.userPrincipalName &»;»& objUser.distinguishedName Next Принцип работы очень простой. Копируете в текстовый файл, сохраняете с разрешением VBS, указываете функции GetObject необходимый DN  до нужной группы. Затем запускаете из командной строки: cscript //nologo вашскрипт.vbs > users.csv Ключ //nologo подавляет вывод в результаты команды служебных заголовков, а модификатор > переправляет результаты в текстовый файл.  Его потом можно открыть  Excel как структурированные данные с разделителем точка с запятой, и использовать как необходимо.

Список неактивных пользователей домена

Пожалуй каждый администратор домена сталкивается с так называемыми «мертвыми душами». Никакой мистики тут нет. Люди устраиваются на работу, увольняются, а отдел кадров обычно не спешит сообщать об этом системному администратору. Также бывает и с неактивными компьютерами. И со временем накапливается куча пользователей, давным давно не не работающих.  Мне понадобилось таких пользователей почистить и я накатал небольшой скрипт:

Скрипт — список неактивных компьютеров в домене

Появилась у меня необходимость получить из домена список компьютеров которые были неактивны месяц и более. В общем те что давно не эксплуатируются, а из домена выведены не были. Порывшись в своих запасниках скриптов нашел  старый VBS который выполняет нужную функцию: On Error Resume Next DomainString=Inputbox(«Введите имя домена»,»Проверка активных компьютеров»,»Имя домена») if DomainString=»» then wscript.echo «Имя домена не введено или сценарий отменен.» wscript.quit end if numDays=InputBox(«Введите число дней, определяющее порог неактивности» & «учетных записей»,»Проверка активных компьютеров»,»XX») if numDays=»» then wscript.echo «Число дней не задано или сценарий отменен.» wscript.quit end if Set fs=WScript.CreateObject(«Scripting.FileSystemObject») Set f=fs.OpenTextFile(«donefs.txt»,2,True) Set DomainObj = GetObject(«WinNT://»&DomainString) if err.number<>0 then wscript.echo «Ошибка соединения с » & DomainString wscript.quit end if DomainObj.Filter = Array(«computer») rem Wscript.echo «Учетные записи домена » & DomainString & » старше » & numDays & » дней.» For each Computer in DomainObj Set Account = GetObject(«WinNT://» & DomainString & «/» & Computer.Name &  «$») RefreshTime = FormatNumber((Account.get(«PasswordAge»))/86400,0) If CInt(RefreshTime) >= CInt(numDays) Then f.WriteLine  Computer.Name & » ; » &  RefreshTime & » дней.» End If Next set DomainObj=Nothing set Shell=Nothing Собственно скрипт очень простой, берет из AD выборку компьютеров и проверяет когда последний раз изменялся PasswordAge.  Если больше указанного количества дней то выводит в текстовый файлик. Разумеется введенный параметр…

Как выгнать (вывести) компьютер из домена

Мне часто попадается вопрос Как выгнать компьютер из домена? Очень просто! Есть два пути, один для любителей командной строки и скриптов : выполняем команду NETDOM.EXE REMOVE machinename /Domain:domain Для работы необходимо иметь права Администраора домена ли оператора домена, команда работает с любого компьютера в домене, пациент должен быть в сети. Ну а для обыденных случаев вполне пойдет и обычный старый добрый  рецепт: Клик  правой кнопкой мыши на значке Мой компьютер — > Свойства — > Имя компьютера заполняем рабочую группу и нажимаем ОК. Также необходимо быть администратором. Напомню что если вы хотите перименовать компьютер то после вывода из домена и переименовыванием вам необходима будет перезагрузка. Без нее если вы попытаетесь опять загнать компьютер в домен, он зайдет под старым именем.  А вообще вам сюда если нужно переименовать компьютер в домене.

Переименовываем компьютер в домене из консоли

Иногда необходимо переименовать компьютер в домене AD. Как это сделать? Можно конечно вручную выгнать его из домена, изменив имя и установив рабочую группу, а затем обратно подключить его к домену под новым именем. Однако это требует личного участия и в случае «хорошо настроенных» параметров безопасности получить компьютер без административных прав. По крайней мере в моем домене так. Все локальные администраторы заблокированы и административный доступ есть только у некоторых доменных учетных записей. Самый правильный и удобный способ переименовать компьтер в домене, это использовать возможности предоставленные нам самим доменом. Итак переименовываем компьютер:

Добавляем дополнительные действия в контекстное меню ADUC

Полезно для администраторов домена использующих оснастку ADUC (Active Directory Users and Computers). Раньше я часто сетовал на то, что в оснастке ADUC нет возможности добавлять свои контекстные меню. Оказалось я был не прав и можно добавлять туда практически все что душе угодно, создав единую точку управления доменом и компьютерами. К примеру, у меня сейчас меню выглядит так:

Account lockouts — Дополнительная информационная вкладка в свойствах пользователя AD

Для тех, кто использует AD,  не секрет что многие поля LDAP скрыты от администратора. К примеру,  это касается параметра  Account lockouts. Иногда возникают ситуации с блокировкой пользователя по неизвестной причине и вам необходима полная информация.  Конечно, для  этого можно воспользоваться специальной утилитой из ALTools.exe из Support tools, но согласитесь гораздо удобнее видеть всю необходимую информацию на одной из вкладок в свойствах пользователя?