Недавно мы установили GFI WebMonitor в нашей сети, который возвращает мне IP-адреса вместо пользовательских. Я нахожусь в процессе определения, сможем ли мы реализовать аутентификацию на прокси-сервере для использования ISA или TMG, чтобы разрешить его, но на данный момент мне нужен способ быстро и точно сгенерировать список имен пользователей AD и текущие соответствующие IP-адрес от DHCP-сервера. Это на удивление сложнее, чем я изначально ожидал.
Можно ли просканировать диапазон IP-адресов и получить список имен пользователей или просканировать список пользователей активного каталога и получить IP-адрес?
Я дурачился с nmap и powershell, чтобы сделать это, но сейчас я упираюсь в стену.
редактировать
Самый простой способ, который я нашел для этого, - использовать утилиту сетевого сопоставления под названием netview. Он генерирует список всех ПК, активных в AD, и пользователей, вошедших в систему вместе с некоторой другой полезной информацией (общие ресурсы, статус администратора и т. Д.)
Просто небольшая идея.
Это даст вам отношение имени хоста к IP. Чтобы получить имена пользователей, я буду немного более вовлечен.
For /f in (listofIPs.bat) do (
Netsh DHCP \\<yourDHCPServername> scope <your dynamic scope> show client 1 | finstr "%%a"
)
Затем вам нужно проанализировать и запросить каждый IP-адрес для пользователей, вошедших в систему. Удачи!
Вы можете создать сценарий входа в систему, включенный через объект групповой политики в Active Directory, как описано Вот например.
Следующий сценарий оставляет желать лучшего, но это лишь способ начать:
$file ="\\yourfileserver\`$hiddenshare\WhoLoggedOnWhere.log"
$logontime = (get-date -format o).split("{+}")[0] -Replace ":","."
$domain = [Environment]::userdomainname
$user = [Environment]::username
$machine = [Environment]::machinename
$servicetag = Get-WmiObject win32_SystemEnclosure | select serialnumber
$IPAddr = Get-WmiObject -query "SELECT * FROM Win32_PingStatus `
WHERE Address='$MyMachineName'" |
select IPv4Address
$OS = Gwmi Win32_OperatingSystem
$OSver = $OS.Caption
$result = "$logontime;$domain\$user;$user;$machine;$IPAddr;$OSver;$servicetag"
$result | out-file $file -append