Кто Где Когда?


AD. Хочу видеть, кто на каком компьютере домена залогинен/разлогинен. и когда.

Контролёр домена — WinServer2012R2. Рабочая машина — Windows10Corp.

Компилирую из тыц тыц тыц

Хранить эту информацию буду в поле Описание объекта Компьютер. Ну а для чего оно еще нам нужно?

Поехали. Чтобы пользовательские компы могли в Description что-то писать, дадим им на это разрешение.

Идем в оснастку Active Directory – пользователи и компьютеры (или просто dsa.msc). Меню Вид — Включаем Дополнительные компоненты

теперь на домене — правой кнопкой мышки, дальше Свойства, закладка Безопасность, кнопка Дополнительно.

В открывшемся окне «Дополнительные параметры безопасности для %domainname» — жмем Добавить. Получаем окно «Элемент разрешения для %domainname». Гиперссылка «Выберите субъект» — выбираем, например , «Пользователи домена»

Снимаем все галки, ставим одну — Запись:Описание

Сохраняем.


Вторая часть балета.

Ползём в C:\Windows\SYSVOL\sysvol\%MySweetDomain\scripts, создаем там папочку logon и в нее сохраняем парочку скриптов —

Сначала User-Logon.VBS

On Error Resume Next
Dim adsinfo, ThisComp, oUser
Set adsinfo = CreateObject(«adsysteminfo»)
Set ThisComp = GetObject(«LDAP://» & adsinfo.ComputerName)
Set oUser = GetObject(«LDAP://» & adsinfo.UserName)
Thiscomp.put «description», «>> Logged on: » + oUser.cn + » («+ oUser.sAMAccountName+») » + CStr(Now)
ThisComp.Setinfo

И, cоответственно, User-Logoff.vbs (можно, конечно один скрипт использовать, с передачей параметров, но отложим это на потом. то есть оставим так, как есть)

On Error Resume Next
Dim adsinfo, ThisComp, oUser
Set adsinfo = CreateObject(«adsysteminfo»)
Set ThisComp = GetObject(«LDAP://» & adsinfo.ComputerName)
Set oUser = GetObject(«LDAP://» & adsinfo.UserName)
Thiscomp.put «description», «<< Logged off: » + oUser.cn + » («+ oUser.sAMAccountName+») » + CStr(Now)
ThisComp.Setinfo

Идем в Управление групповой политикой (или gpmc.msc), создаем Объект групповой политики, допустим UserLogon

Для входа/выхода в систему выбираем соответствующий скрипт

  • Линкуем политику к Users
  • C:\>Gpupdate /force

Вечером заходим в Пользователи и компьютеры и немножко радуемся —

Но мы же не хотим каждый раз ползать в оснастку, жать сто кнопок. Хотим при необходимости видет все это на рабочем компьютере. Поэтому идем на рабочий комп и в удобное место валим ссылочку на свой PS-скриптик, который нам будет выводит нужную инфу в красивой табличке.

ИТАК

Сначала включим (если еще не) в Powershell поддержку Active Directory. Т.к. у нас Windows 10.1809, то, как подсказывает нам WIP, включаем поддержку AD простой командой

Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”

Теперь у нас развязаны руки, развлекаемся

  • Сначала посмотрим все компьютеры домена, с описаниями (if any)

Get-ADComputer -SearchBase «OU=Computers,OU=#####,DC=######,DC=ru» -Properties * -Filter * | Select-Object CN, Description

  • Посмотрим только включенные компьютеры

Get-ADComputer -SearchBase «OU=Computers,OU=#####,DC=######,DC=ru» -Properties * -Filter * | Select-Object CN, Description | where {$_.description -like «>>*»}

  • Посмотрим только включенные компьютеры в красивой табличке

Get-ADComputer -SearchBase «OU=Computers,OU=#####,DC=######,DC=ru» -Properties * -Filter * | Select-Object CN, Description | where {$_.description -like «>>*»} | Sort CN | Out-GridView -Title «Информация по логонам»

  • Ну или просто посчитаем количество включенных

Get-ADComputer -SearchBase «OU=Computers,OU=#####,DC=######,DC=ru» -Properties * -Filter * | Select-Object CN, Description | where {$_.description -like «>>*»} | Measure-Object |%{$_.count}

И это, мать его, великолепно