На каком компьютере залогинился пользователь ad

На каком компьютере залогинился пользователь ad

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в России Pyatilistnik.org. В прошлый раз мы с вами производили поиск неактивных пользователей в домене. Сегодня мы сделаем еще одну полезную вещь для нашего AD, а именно научимся автоматически определять DNS-имя компьютера на котором локально залогинен пользователь и заносить эту информацию в атрибут Active Directory у пользовательской учетной записи.

В компаниях, где есть техническая поддержка пользователей, ее инженеры очень часто подключаются удаленно к компьютерам сотрудников для устранения всевозможных проблем. Чаще всего используются программы TeamViewer, встроенный помощник Windows или Dameware. Но для того, чтобы подключиться вам необходимо знать имя компьютера. Понятно, что можно каждый раз просить пользователя посмотреть его либо в окне системы или же на рабочем столе, если у вас выводится информация с помощью BGinfo. Но проще и правильнее всегда эту информацию иметь в базе Active Directory.

Поэтому мы сделаем так, что при локальном входе в компьютер, информация, о его DNS-имени будет автоматически записана в нужное нам поле. Это удобно и можно легко эту информацию выдергивать в любую программу, которая умеет работать с Active Directory, например SCCM.

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

На каком компьютере залогинился пользователь ad

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Сообщения: 1
Благодарности: 0

ваш способ работает, если вы запускаете с Comp1
если вы с Comp1 будете смотреть Comp2 — поле будет пустым Username
ваш способ к сожалению не актуален

sysrtfm

И так, встала задача — нужно каким либо образом определять на каком компьютере залогинен пользователь AD либо наоборот какой пользователь залогинен на ПК в текущий момент. На разных админских форумах эту задачу решают по разному. Я как то давно нашел скрипт и хочу им с Вами поделится.

Вкратце — 2 скрипта VBS помещаются в групповые политики нужной Organisation Unit дальше пользователям дается право на запись в поле «Description» учетных записей их компьютеров. скрипт выполняющийся при входе записывает description logoff и наоборот.

Вот как это выглядит в итоге:

Залогиненные пользователи на ПК в консоли AD онлайн

1) Группе… скажем Domain Users делегируем на OU, содержащий компьютеры, следующие разрешения: Computer Objects > Write Description. Далее приведенные действия отличаются немного от Windows Server 2003 и Windows Server 2008 ENG, т.к. я все делал в русской оснастке 2008 AD. Для этого правой кнопкой мыши на OU где находятся все ПК, выбираем первый пункт «Делегирование управления», «Далее», «Добавить», выбираем группу пользователей «Domain Users» например, «Далее», Выбираем «Создать особую задачу для делегирования», «Далее», «только следующими объектами в этой папке», спускаемся в самый низ и отмечаем «Компьютер объектов», «Далее», Убираем галку «Общие» и отмечаем «Разрешения для свойств» — список увеличится, почти в самом низу отмечаем «Запись Описание», «Далее» и «Готово». После этого Все пользователи домена смогут записывать в поле «Описание» компьютеров.

2) Дальше нужно добавить скрипты в GP

Вот сами скрипты:

Сохраняем их с расширением VBS.

Все теперь при логофелогоне пользователей в Поле Description компов будут появлятся соответствующие записи.

3) Открываем групповую политику OU в которой находятся пользователи. «Конфигурация пользователя», «Политики», «Конфигурация Windows», «Сценарии Вход/Выход из системы» и добавляем скрипты.

На каком компьютере залогинился пользователь ad

Если PowerShell то можно так:

# Проверка доступности
ping $compname /n 1 | Out-Null
if ($LastExitCode -ne 0)
<
«$compname not found.»
>
else
<
>

$hostlist = Get-ADComputer -Filter -property * | ?

Foreach ($computer in $hostlist)

# проверяем доступность хоста
if (Test-Connection $computer.name -erroraction silentlyContinue ) <
Write-Host «$computer UP» -foregroundColor Green

# выполняем WMI запрос
$hostname = Get-WmiObject Win32_ComputerSystem –Computer $computer.name
$userName = $HostName.UserName

Как получить список залогиненных пользователей

В Powershell есть несколько методов возврата списка активных пользователей. Каждый из способов имеет свои минусы и поэтому, в зависимости от цели, какой-то способ будет удобнее использовать локально (при входе пользователя), а какой-то удаленно. В случае с WMI это так и не получилось сделать, так нет класса, который бы хранил все нужные значение и работал бы везде.

Самый простой способ — это поместить скрипт в планировщик задач, который будет выполняться при входе пользователя в систему. Этот способ не подразумевает удаленной работы. Почти полный скрипт выглядит так:

Получение имени залогинившегося пользователя и его времени в Powershell

Можно создать политику, которая будет запускать скрипт при входе и экспортировать в CSV. Сам файл CSV может находится на удаленном компьютере. Следующая команда сделает это записав данные в конец существующий файл (т.е. не перезапишет файл):

Получится примерно следующий вид файла:

Получение имени залогинившегося пользователя и его времени в Powershell в CSV

Как создавать команды и функции в Powershell вызывать их и передавать параметры

На каком компьютере залогинился пользователь?

На каком компьютере залогинился пользователь?

В какой ситуации нам может понадобиться узнать, на каком компьютере залогинился (выполнил вход) пользователь?

Как правило, это нужно для того, чтобы удаленно подключиться к компьютеру клиента, либо при составлении отчетности, в которой указывается имя сотрудника и компьютер, за которым он сидит. Так же информация может быть полезна при проектировании групповой политики.

На просторах интернета я нашел различные варианты, в которых предлагаю писать скрипты, однако мы с вами рассмотрим метод куда проще.

Использую стандартные средства серверной операционной системы, в моем примере будет рассматриваться Windows Server 2008 R2.

Рассмотрим примерный сценарий задачи по поиску компьютера, на котором залоигнился (выполнил вход) пользователь.

Пользователь звонит вам в поисках решения определенного вопроса, и первым делом мы узнаем (если не знаем) фамилию и имя сотрудника. Далее, для подключения к компьютеру нам нужно, по полученным данным, выяснить за каким компьютером сидит данный сотрудник. Для этого заходим в (Пуск Администрирование Диспетчер сервера Роли Доменные службы Active Directory Active Directory – пользователи и компьютеры ваш домен.local ПКМ Найти)

na kakom kompyutere zaloginilsya polzovatel 1

Вводим имя сотрудника, которое нас интересует и жмем кнопку «Найти»

na kakom kompyutere zaloginilsya polzovatel 2

Из полученных данных нам нужно узнать логин пользователя, под которым он выполняет вход (залогинивается) в систему. Нужен именно логин, так как имя не является логином, по этому открываем свойства учетной записи и переходим во вкладку «Учетная запись». Где узнаем имя входа пользователя.

na kakom kompyutere zaloginilsya polzovatel 3

Теперь нам потребуется проверить, на какой компьютер последний раз выполнялся вход под данной учетной записью? Для этого запустим «Журнал событий» (Пуск Администрирование Просмотр событий Журналы Windows Безопасность)

na kakom kompyutere zaloginilsya polzovatel 4

Как вы видите, у нас есть записи из категории «Вход в систему» Именно в таких записях и хранится информация о том, на каком компьютере залогинился (выполнил вход) пользователь. Теперь нам остается найти запись, в которой фигурирует наш пользователь, для этого выполним поиск по данным записям щелкнув правой кнопкой мыши по вкладке (Безопасность Найти Вводим логин пользователя Найти далее) и ищем запись из категории «Вход в систему»

na kakom kompyutere zaloginilsya polzovatel 5

Заходим в свойства записи и смотрим, чтобы «Имя учетной записи» совпадало с нашим, если все совпадает, то смотрим «Сетевой адрес источника» это и есть IP адрес машины, на которую последний раз выполнял вход (залогинивался) наш пользователь.

na kakom kompyutere zaloginilsya polzovatel 6

Теперь можем узнать доменное имя машины, по её IP адресу через команду в командной строке (Пуск Выполнить cmd) ping –a 192.168.0.97

na kakom kompyutere zaloginilsya polzovatel 7

Вот и все, теперь мы знаем, что пользователь Севостьянов Антон последний раз был залогинен на компьютере admins. Скорее всего, он за ним и сидит.

А далее уже можем использовать полученную информацию в своих интересах, как вариант это подключиться через удаленный рабочий стол, удаленный помощник, Radmin или удаленно установить LiteManager и подключиться к нему.

В качестве альтернативы, можно вывести на рабочий стол IP адрес компьютера и спрашивать его у пользователя. Об этом я рассказывал в уроке по программе BGinfo для обычной сети и в домене.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector