
最近、ネットワークに GFI WebMonitor をセットアップしましたが、ユーザーではなく IP が返されます。プロキシで認証を実装して ISA または TMG を使用して解決できるかどうかを検討中ですが、現時点では、AD ユーザー名のリストと現在の対応する IP アドレスを DHCP サーバーから迅速かつ正確に生成する方法が必要です。これは、当初予想していたよりも驚くほど困難です。
IP 範囲をスキャンしてユーザー名のリストを取得するか、アクティブ ディレクトリのユーザー リストをスキャンして IP を取得する方法はありますか?
これを実行するために nmap と powershell をいろいろ試してみましたが、現在は行き詰まっています。
編集
私が実際に見つけた最も簡単な方法は、ネットワークマッピングユーティリティを使用することです。ネットビューAD 上でアクティブなすべての PC とログインしているユーザーのリストを、その他の有益な情報 (共有、管理者ステータスなど) とともに生成します。
答え1
前述のように、Active DirectoryのGPOを通じて有効になるログオンスクリプトを作成できます。ここ例えば。
次のスクリプトは、まだ改善の余地はありますが、開始するには十分です。
$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
答え2
ちょっとしたアイデアです。
これにより、ホスト名と IP の関係がわかります。ユーザー名を取得するには、もう少し複雑になる場合があります。
For /f in (listofIPs.bat) do (
Netsh DHCP \\<yourDHCPServername> scope <your dynamic scope> show client 1 | finstr "%%a"
)
次に、ログオンしているユーザーの各 IP を解析してクエリする必要があります。頑張ってください!