Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Get-ADUser + GetADComputer (http://forum.oszone.net/showthread.php?t=341920)

nick348 23-08-2019 15:53 2885207

Get-ADUser + GetADComputer
 
Добрый день

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

Ageron 23-08-2019 17:58 2885216

Цитата:

Цитата nick348
Или все-таки надо парсить журнал security DC надо парсить? »

да
Скрытый текст


Цитата:

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

для чего нужна связь?
это 2 разных объекта

nick348 25-08-2019 12:23 2885371

"для чего нужна связь?
это 2 разных объекта"

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

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

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

Ageron 26-08-2019 09:00 2885452

Цитата:

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

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

Цитата:

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

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

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



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

Charg 26-08-2019 09:39 2885457

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

Elven 26-08-2019 10:47 2885462

Charg, ну не то чтобы совсем нет... Можно пользователю разрешить логиниться только на определенных компьютерах, и вопрос решен. Информация о том куда логинился, конечно, будет только в секурицу логе, если не использовать какие-нибудь логон скрипты пишущие кто-куда логинился.
вот так например:
Код:

$env:USERNAME + ' ' + (Get-Date) | Out-File  $env:COMPUTERNAME -Append
или точно так же, но на шару какую-нибудь, или местами поменять имя пользователя и имя компа, разумеется это не настолько круто как выдирать из лога, но вполне себе рабочий вариант, работу назад такую фигню по просьбе безопасников делал.

nick348 26-08-2019 11:55 2885484

А без GPO?

Charg 26-08-2019 12:11 2885488

Цитата:

Цитата Elven
ну не то чтобы совсем нет... Можно пользователю разрешить логиниться только на определенных компьютерах »

Можно то можно, но это аттрибут объекта "пользователь", к объекту "компьютер" отношения не имеет.

Elven 26-08-2019 12:29 2885496

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 2885512

А без GPO?

vkz 31-08-2019 01:23 2886087

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 2886172

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

Iska 31-08-2019 19:52 2886175

Цитата:

Цитата Charg
И еще - таб в PS ставится так \t »

Неа. Так:
Код:

"`t"
\t — это в C или в регулярках.

Charg 31-08-2019 20:07 2886176

Iska, да, действительно, ошибся.

vkz 02-09-2019 17:27 2886385

Цитата:

Цитата Charg
зачем такие костыли с датой и временем если можно было сразу (Get-Date).ToString("dd:MM:yyyy HH:mm:ss")? »

Чтобы в файле запись имела более удобоваримый вид.

Charg 02-09-2019 17:38 2886388

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


Время: 19:36.

Время: 19:36.
© OSzone.net 2001-