Я полагаю, что это - все в памяти.
Я знаю, что можно использовать dnscmd для дампа кэша с командой как это:
dnscmd serverip /zoneprint .
Можно просмотреть содержание с MMC DNS. От View меню удостоверяется, что опция 'Advanced' проверяется. Можно затем нажать на сервер, и под этим будет папка, названная 'Кэшируемые Поиски'.
Будет стоимость производительности, но что можно на самом деле хотеть сделать, включают вход отладки и затем выполняют отчеты против файла журнала, вместо того, чтобы пытаться посмотреть на в просто кэше.
Для конфигурирования входа отладки открывают менеджера по DNS, щелкают правой кнопкой по серверу. Существует вкладка 'Debug Logging'. Установите путь для файла журнала и установите флажки для входа то, что Вы хотите видеть.
Если Вы просто хотите список профиля, PowerShell является, вероятно, Вашим лучшим выбором.
$Server = 'RemoteServer'
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server)
Это инстанцирует $reg как держателя для удаленного объекта реестра в HKLM. Для достигания бита, Вы хотите:
$ProfileList = $Reg.OpenSubKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList')
Это заполнит $ProfileList с подразделами для самих профилей. Затем извлечь список пользователей:
Write-Host "`n$Server: " -nonewline
ForEach ($SID in $ProfileList.GetValueNames()) {
$ProfileKey = $ProfileList.OpenSubKey($SID)
# Get the ProfileImagePath key
$ProfileKey.GetValue("ProfileImagePath")
# Break the path up into an array, using \ as the delimiter
$PathBits = $ProfileKey.Split("\")
# The last element of the array is our user, find the last element
$LastIndex = $PathBits.Count - 1
# Dump the last element to something useful
$User = $PathBits[$LastIndex]
# Output the user
write-host " $User" -nonewline
}
Или что-то близко к этому. Это первое, что пришло на ум.
Создайте GPO, который относится к серверам, которые Вы хотите контролировать и под Конфигурацией компьютера> политики> Windows Settings> Настройки безопасности> Локальные политики> Политика аудита, включить "Контрольные события входа в систему" на Успехе и/или Отказе в зависимости от Ваших требований.
Не включайте Контрольные события входа в систему учетной записи, если серверами, которые Вы контролируете, является DCS. События входа в систему учетной записи сгенерированы на контроллерах домена, когда кто-то входит в систему с их учетной записью пользователя домена, таким образом, Вы будете видеть слишком много событий.
Короче говоря, "Событие Logon" создается, когда пользователь входит в систему компьютера, "Событие входа в систему учетной записи" создается на контроллере домена, когда пользователь входит в систему с их учетной записью пользователя домена, НО компьютер, которого они входят в систему в интерактивном режиме, генерирует событие входа в систему Учетной записи также. Это - то, для чего Вы хотите контролировать. Вместе с EventForwarding (для Ваших способных серверов) можно просто контролировать собственный журнал событий или использовать прерывания SNMP для ловли использования событий evntwin.exe
и передайте им системе контроля/предупреждения SNMP.
На рабочих станциях пользователя я на самом деле использую VBScript, который открывает скрытый процесс IE для внутреннего сервера с PHP/MySQL, установленным, который просто выводит имя пользователя в к базе данных и вот именно. VBScript:
Set oIE = CreateObject("InternetExplorer.Application")
Set oNet = CreateObject("WScript.Network")
sComputerName = oNet.ComputerName
sUsername = oNet.UserName
oIE.Navigate "http://intranet/logon/logon.php?un=" & Trim(sUsername) & "&ma=" & Trim(sComputerName)
Do While oIE.Busy = True
WScript.Sleep 500
Loop
oIE.Quit
Set oIE = Nothing
WScript.Quit
Очевидно, Вам нужен веб-сервер, база данных PHP и MySQL для движения с этим поэтому, если это - что-то, чем Вы интересуетесь, сообщаете мне, и я раскопаю те биты также. Можно применить это использование GPO также, но с одним протестом, оно может только работать под разделом User Configuration GPO.
Так, две опции для Вас там. HTH.
Править: Вот Сценарий PHP, упомянутый выше. Легкий действительно.
mysql_connect('mysqlserver', 'username', 'password');
mysql_select_db('database');
$un = trim(addslashes($_GET['un']));
$ma = trim(addslashes($_GET['ma']));
mysql_query("INSERT INTO userlist (user_logon_name, machine_name, logon_time) VALUES ('$un', '$ma', now())");
echo "User ". $_GET['un']. " logged on.";
Удачи