Показать полную графическую версию : Get-ADUser + GetADComputer
Добрый день
Как реализовать такое:
Я знаю учетку юзера, мне надо найти комп на которым он логинился (или несколько, сколько раз, с каким успехом и т.д,) за последнюю неделю.
Это должен быть скрипт. powershell Должен запускаться с любого компьютера AD (можно с запросом прав на просмотр AD).
Или все-таки надо парсить журнал security DC надо парсить?
Догадываюсь что Get-ADUser и GetADComputer должны быть как-то связаны кроме description, но не могу понять как.
Или все-таки надо парсить журнал 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 разных объекта
"для чего нужна связь?
это 2 разных объекта"
я же вроде внятно написал для чего.
Я знаю доменную учетку юзера, мне надо найти комп на которым он логинился (или несколько, сколько раз, с каким успехом и т.д,) за последнюю неделю и не хочу при этом лезть на DC.
Парсинг жкрнала DC не подходит, так как нужны права админа AD и он будет занимать длительное время.
Я знаю доменную учетку юзера, мне надо найти комп на которым он логинился (или несколько, сколько раз, с каким успехом и т.д,) за последнюю неделю и не хочу при этом лезть на DC. »
эти данные есть только в журнале
Парсинг жкрнала DC не подходит, так как нужны права админа AD и он будет занимать длительное время. »
делегируйте права на доступ к журналу необходимому пользователю
или выгружайте журналы в отдельную папку с необходимым доступом
можно делать анализ ночью и высылать отчет по почте, всех неудачных попыток
для анализа где кто зашел в текущий момент, много вариантов...
для получение истории, только анализ журнала.
nick348, это клёво что тебе надо, но в структуре Active Directory никакой связи между объектами "компьютер" и "пользователь" - нет.
Charg, ну не то чтобы совсем нет... Можно пользователю разрешить логиниться только на определенных компьютерах, и вопрос решен. Информация о том куда логинился, конечно, будет только в секурицу логе, если не использовать какие-нибудь логон скрипты пишущие кто-куда логинился.
вот так например:
$env:USERNAME + ' ' + (Get-Date) | Out-File $env:COMPUTERNAME -Append
или точно так же, но на шару какую-нибудь, или местами поменять имя пользователя и имя компа, разумеется это не настолько круто как выдирать из лога, но вполне себе рабочий вариант, работу назад такую фигню по просьбе безопасников делал.
ну не то чтобы совсем нет... Можно пользователю разрешить логиниться только на определенных компьютерах »
Можно то можно, но это аттрибут объекта "пользователь", к объекту "компьютер" отношения не имеет.
Charg, я имел ввиду тот факт, что при наличии такой настройки не придется собирать данные
nick348, без GPO только колупательство в security, например так:
Get-WinEvent -FilterHashtable @{LogName=”Security”;Id=4624} | ForEach-Object {write-host $_.properties[1].value $_.properties[5].value $_.TimeCreated}
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;
Данные выгружаются в шару в текстовый файл в формате:
ИмяПользователя ИмяКомпьютера Дата Время
vkz, зачем такие костыли с датой и временем если можно было сразу (Get-Date).ToString("dd:MM:yyyy HH:mm:ss")?
И еще - таб в PS ставится так \t
И еще - таб в PS ставится так \t »
Неа. Так:
"`t"
\t — это в C или в регулярках.
Iska, да, действительно, ошибся.
зачем такие костыли с датой и временем если можно было сразу (Get-Date).ToString("dd:MM:yyyy HH:mm:ss")? »
Чтобы в файле запись имела более удобоваримый вид.
vkz, я это к тому говорил что в методе ToString() можно любой удобоваримый вид изначально задать, хоть 10 табов внутрь запихнуть если они нужны.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.