Получение данных из AD
posted in Общие вопросы
0
Есть: список пользователей AD
Нужно: получить список ПК, на которых логинились эти пользователи.
Нужно: получить список ПК, на которых логинились эти пользователи.
Responses (8)
-
Accepted Answer
0Это мне кажется в область программирования
Я бы предложил написать скрипт и повесить его через групповые политики запускаться на каждом компьютере.
Можно пойти исходя из следующего. Когда пользователь логинится на компьютере в папке C:\Users создается папка с его logon name.
Соответственно скрипт при запуске может проверять имена этих папок и делать запись в какой-нибудь файл на сетевом ресурсе в формате hostname | username
Дальше в этом файле можно будет увидеть на каких машинах кто когда-либо логинился.
Есть еще такая вещь как SCCM, но это уже полноценный сервер, который позволяет управлять компьютерами в домене и вести аудит. -
Accepted Answer
-
Accepted Answer
-
Accepted Answer
1Попробуй этот скрипт.
Сначало выбири файл со списком ПК, затем файл со списком пользователей.
Вывод будет в файл log.txt
@echo off CHCP 1251 >nul set PATH=%SYSTEMROOT%;%SYSTEMROOT%\SYSTEM32;%SYSTEMROOT%\SYSTEM32\WBEM; del %~dp0Log.txt /F for /f "usebackq delims=" %%i in ( `@"%systemroot%\system32\mshta.exe" "about:document.forms[0].elements[0].click();var F=document.forms[0].elements[0].value;try {new ActiveXObject ('Scripting.FileSystemObject').GetStandardStream(1).Write(F)};catch (e){};close();" ^ 1^|more` ) do set FilePCSource=%%i for /f "usebackq delims=" %%i in ( `@"%systemroot%\system32\mshta.exe" "about:document.forms[0].elements[0].click();var F=document.forms[0].elements[0].value;try {new ActiveXObject ('Scripting.FileSystemObject').GetStandardStream(1).Write(F)};catch (e){};close();" ^ 1^|more` ) do set FileUserSource=%%i :Start pushd "%~dp0Logs" rd /S /Q "%~dp0Logs" popd echo PC File: %sFilePCSource% echo User File: %sFileUserSource% md "%~dp0Logs" for /F "usebackq tokens=*" %%f in (%FilePCSource%) do call :users_on_pc "%%~f" pause :Finish exit /b :users_on_pc set pc=%~1 for /F "Tokens=*" %%A In ('Reg Query "\\%~1\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find /i "ProfileList\S-"') Do ( for /F "Tokens=2*" %%B In ('Reg Query "\\%~1\%%A" /s^|Find /i "ProfileImagePath"') Do echo %%~nC >> "%~dp0Logs\%~1.txt" ) for /F "usebackq tokens=*" %%f in (%FileUserSource%) do call :find_user_on_pc "%%~f" goto :eof :find_user_on_pc find "%~1" "%~dp0Logs\%pc%.txt" IF %errorlevel%==0 ( echo %~1 - %pc% >> Log.txt ) goto :eof
Like HFFreeway and Александр Деев likes this post. -
Accepted Answer
-
Accepted Answer
0а компьютеры у тебя в домен введены? Если да, то у тебя есть список компьютеров. Если нет, тебе для начало нужно просканировать свою корпоративную сеть. Можно использовать что-нибудь на подобие утилиты Nmap. Там есть большое количество опций почитать можно в интернете. В том числе можно определить имена компьютеров и записать результат сканирования в файл. Дальше уже, если на них конечно стоит один пароль локального администратора, можно воспользоваться советом от HFShak. -
Accepted Answer
0Хотя стоп, исходя из задачи все компьютеры у тебя должны быть заведены в домен. Вытащи список компов из AD. Как это сделать много статей в интернете, можешь попробовать эту: http://habrahabr.ru/post/124386/
Дальше уже можно попробовать совет от HFShak -
Accepted Answer
0Для получения списка ПК используй скрипт powershell:
import-module ActiveDirectory Get-ADComputer ` -Filter * ` -SearchBase 'DC=CONTOSO,DC=ru' ` -SearchScope Subtree ` -Properties ` Name ` | select-object ` -property ` @{Name = "Name"; Expression = {$_.Name;}} ` | out-File C:\AD_PC.txt
Вместо CONTOSO введи свой домен и вставь скрипт в ps консольLike Александр Деев likes this post.
Please login to post a reply
You will need to be logged in to be able to post a reply. Login using the form on the right or register an account if you are new here.
Register Here »