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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней (http://forum.oszone.net/showthread.php?t=310494)

alexander_stepanov1 17-01-2016 19:30 2596155

PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
 
Доброго времени суток!

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

я могу просмотреть это всё просто списком, но необходимо написать скрипт, для выполнения этой задачи. С powerShell'ом практически не знаком, но от меня требуют в таком виде.

Спасибо заранее.

Kazun 17-01-2016 20:46 2596187

DOMAIN - Заменить на NetBios имя своего домена

Код:

$filter = "*[System[EventID=4624] and (EventData[Data[@Name='LogonType']=2] or EventData[Data[@Name='LogonType']=10])
        and EventData[Data[@Name='TargetDomainName']='DOMAIN']]"
Get-ADComputer -Filter "Enabled -eq '$true' -and DnsHostName -like '*'" | Foreach {
        $event = $mail = $user = $null
        $event = Get-WinEvent -FilterXPath $filter -LogName Security -MaxEvent 1 -ComputerName $_.DnsHostName
       
        if($event) {
                $user = $event.Properties[5].Value
                if($user) {
                        $mail = (Get-ADUser $user -Properties mail).mail
                }
        }
       
        [pscustomobject]@{
                ComputerName = $_.Name
                UserName = $user
                MailAddress = $mail
        }
}


alexander_stepanov1 17-01-2016 21:27 2596201

я не совсем понял скрипт

тут мы задаем условие для поиска:
$filter = "*[System[EventID=4624] and (EventData[Data[@Name='LogonType']=2] or EventData[Data[@Name='LogonType']=10])
and EventData[Data[@Name='TargetDomainName']='DOMAIN']]"

здесь мы выводим список, исходя из нашего фильтра:
Get-ADComputer -Filter "Enabled -eq '$true' -and DnsHostName -like '*'" | Foreach {


а вот тут я понял не до конца, вы не могли бы пояснить
$event = $mail = $user = $null
$event = Get-WinEvent -FilterXPath $filter -LogName Security -MaxEvent 1 -ComputerName $_.DnsHostName

if($event) {
$user = $event.Properties[5].Value
if($user) {
$mail = (Get-ADUser $user -Properties mail).mail
}
}

и почему у нас именно такое условие поиска?

Iska 18-01-2016 01:33 2596249

Цитата:

Цитата alexander_stepanov1
здесь мы выводим список, исходя из нашего фильтра:
Get-ADComputer -Filter "Enabled -eq '$true' -and DnsHostName -like '*'" | Foreach { »

Нет. «Здесь» мы получаем из AD перечень разрешённых машин. К «нашему фильтру» сие отношения пока не имеет.

Цитата:

Цитата alexander_stepanov1
а вот тут я понял не до конца, вы не могли бы пояснить
$event = $mail = $user = $null »

Аналогично:
Код:

$event = $null
$mail = $null
$user = $null

А вот тут:
Цитата:

Цитата alexander_stepanov1
$event = Get-WinEvent -FilterXPath $filter -LogName Security -MaxEvent 1 -ComputerName $_.DnsHostName »

уже «наш фильтр» задействуется. Для каждой машины получаем из журнала безопасности последнее событие успешной регистрации пользователя, локально или посредством RDS.

Цитата:

Цитата alexander_stepanov1
if($event) {
$user = $event.Properties[5].Value
if($user) {
$mail = (Get-ADUser $user -Properties mail).mail
}
} »

Если таковое событие найдено, попытаться получить из его свойств имя пользователя. Если таковое получено, попытаться получить из AD его почту.

Цитата:

Цитата Kazun
[pscustomobject]@{ ComputerName = $_.Name
UserName = $user
MailAddress = $mail
} »

Оформить потребные свойства в пользовательский объект.

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

Цитата:

Цитата alexander_stepanov1
и почему у нас именно такое условие поиска? »

Потому, что это именно то условие, которое потребно. Базовые начала: 10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабрахабр.

alexander_stepanov1 18-01-2016 07:48 2596286

Благодарю всех за ответы)


Время: 12:42.

Время: 12:42.
© OSzone.net 2001-