PDA

Показать полную графическую версию : Get-ADUser + GetADComputer


nick348
23-08-2019, 15:53
Добрый день

Как реализовать такое:
Я знаю учетку юзера, мне надо найти комп на которым он логинился (или несколько, сколько раз, с каким успехом и т.д,) за последнюю неделю.
Это должен быть скрипт. powershell Должен запускаться с любого компьютера AD (можно с запросом прав на просмотр AD).
Или все-таки надо парсить журнал security DC надо парсить?
Догадываюсь что Get-ADUser и GetADComputer должны быть как-то связаны кроме description, но не могу понять как.

Ageron
23-08-2019, 17:58
Или все-таки надо парсить журнал security DC надо парсить? »
да
https://sys-team-admin.ru/images/Stati/administrirovanie/2017.02.14-na-kakom-kompyutere-zaloginilsya-polzovatel/na-kakom-kompyutere-zaloginilsya-polzovatel-6.jpg

Догадываюсь что Get-ADUser и GetADComputer должны быть как-то связаны кроме description, но не могу понять как. »
для чего нужна связь?
это 2 разных объекта

nick348
25-08-2019, 12:23
"для чего нужна связь?
это 2 разных объекта"

я же вроде внятно написал для чего.

Я знаю доменную учетку юзера, мне надо найти комп на которым он логинился (или несколько, сколько раз, с каким успехом и т.д,) за последнюю неделю и не хочу при этом лезть на DC.

Парсинг жкрнала DC не подходит, так как нужны права админа AD и он будет занимать длительное время.

Ageron
26-08-2019, 09:00
Я знаю доменную учетку юзера, мне надо найти комп на которым он логинился (или несколько, сколько раз, с каким успехом и т.д,) за последнюю неделю и не хочу при этом лезть на DC. »

эти данные есть только в журнале

Парсинг жкрнала DC не подходит, так как нужны права админа AD и он будет занимать длительное время. »

делегируйте права на доступ к журналу необходимому пользователю
или выгружайте журналы в отдельную папку с необходимым доступом

можно делать анализ ночью и высылать отчет по почте, всех неудачных попыток



для анализа где кто зашел в текущий момент, много вариантов...
для получение истории, только анализ журнала.

Charg
26-08-2019, 09:39
nick348, это клёво что тебе надо, но в структуре Active Directory никакой связи между объектами "компьютер" и "пользователь" - нет.

Elven
26-08-2019, 10:47
Charg, ну не то чтобы совсем нет... Можно пользователю разрешить логиниться только на определенных компьютерах, и вопрос решен. Информация о том куда логинился, конечно, будет только в секурицу логе, если не использовать какие-нибудь логон скрипты пишущие кто-куда логинился.
вот так например:
$env:USERNAME + ' ' + (Get-Date) | Out-File $env:COMPUTERNAME -Append
или точно так же, но на шару какую-нибудь, или местами поменять имя пользователя и имя компа, разумеется это не настолько круто как выдирать из лога, но вполне себе рабочий вариант, работу назад такую фигню по просьбе безопасников делал.

nick348
26-08-2019, 11:55
А без GPO?

Charg
26-08-2019, 12:11
ну не то чтобы совсем нет... Можно пользователю разрешить логиниться только на определенных компьютерах »
Можно то можно, но это аттрибут объекта "пользователь", к объекту "компьютер" отношения не имеет.

Elven
26-08-2019, 12:29
Charg, я имел ввиду тот факт, что при наличии такой настройки не придется собирать данные
nick348, без GPO только колупательство в security, например так:

Get-WinEvent -FilterHashtable @{LogName=”Security”;Id=4624} | ForEach-Object {write-host $_.properties[1].value $_.properties[5].value $_.TimeCreated}

nick348
26-08-2019, 14:20
А без GPO?

vkz
31-08-2019, 01:23
nick348 Это не решит вашу проблему, но, возможно, кому-то будет полезно. Через GPO, на вход и выход пользователя из системы, запускаю подобный скрипт. Он показывает когда и с какого компа пользователь входил в систему, и когда вышел (два почти одинаковых скрипта).


$data = (Get-Date).ToString("dd:MM:yyyy")
$tim = (Get-Date).ToString("HH:mm:ss")
$d = "FirstStart.txt"
$usr = $env:USERNAME
$cmp = $env:COMPUTERNAME
$tab = [char]9
(New-Object -ComObject WScript.Network).MapNetworkDrive("P:", "\\ServerName\ShareName")
Set-Location P:
New-Item .\$d -ItemType File
"$usr $tab $cmp $tab $data $tab $tim" -join ',' | Out-File .\$d -Append -Width 600;
Данные выгружаются в шару в текстовый файл в формате:

ИмяПользователя ИмяКомпьютера Дата Время

Charg
31-08-2019, 19:40
vkz, зачем такие костыли с датой и временем если можно было сразу (Get-Date).ToString("dd:MM:yyyy HH:mm:ss")?
И еще - таб в PS ставится так \t

Iska
31-08-2019, 19:52
И еще - таб в PS ставится так \t »
Неа. Так:
"`t"
\t — это в C или в регулярках.

Charg
31-08-2019, 20:07
Iska, да, действительно, ошибся.

vkz
02-09-2019, 17:27
зачем такие костыли с датой и временем если можно было сразу (Get-Date).ToString("dd:MM:yyyy HH:mm:ss")? »
Чтобы в файле запись имела более удобоваримый вид.

Charg
02-09-2019, 17:38
vkz, я это к тому говорил что в методе ToString() можно любой удобоваримый вид изначально задать, хоть 10 табов внутрь запихнуть если они нужны.




© OSzone.net 2001-2012