Доброго времени суток!
У меня есть список доменных имен компьютеров(около тысячи), и мне необходимо узнать список имен доменных учетных записей, авторизовавшихся на каждом из этих компьютерах последним, а так же адреса электронной почты этих учетных записей.
я могу просмотреть это всё просто списком, но необходимо написать скрипт, для выполнения этой задачи. С powerShell'ом практически не знаком, но от меня требуют в таком виде.
Спасибо заранее.
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
-
Kazun
Re: PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
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
Re: PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
я не совсем понял скрипт
тут мы задаем условие для поиска:
$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
}
}
и почему у нас именно такое условие поиска?
тут мы задаем условие для поиска:
$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
Re: PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
Цитата alexander_stepanov1:
здесь мы выводим список, исходя из нашего фильтра:
Get-ADComputer -Filter "Enabled -eq '$true' -and DnsHostName -like '*'" | Foreach {
Нет. «Здесь» мы получаем из AD перечень разрешённых машин. К «нашему фильтру» сие отношения пока не имеет.
Цитата alexander_stepanov1:
а вот тут я понял не до конца, вы не могли бы пояснить
$event = $mail = $user = $null
Аналогично:
Код:
А вот тут:
Цитата alexander_stepanov1:
$event = Get-WinEvent -FilterXPath $filter -LogName Security -MaxEvent 1 -ComputerName $_.DnsHostName
уже «наш фильтр» задействуется. Для каждой машины получаем из журнала безопасности последнее событие успешной[/i] регистрации пользователя, локально или посредством 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:
и почему у нас именно такое условие поиска?
Потому, что это именно то условие, которое потребно. Базовые начала:
здесь мы выводим список, исходя из нашего фильтра:
Get-ADComputer -Filter "Enabled -eq '$true' -and DnsHostName -like '*'" | Foreach {
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
Нет. «Здесь» мы получаем из AD перечень разрешённых машин. К «нашему фильтру» сие отношения пока не имеет.
Цитата alexander_stepanov1:
а вот тут я понял не до конца, вы не могли бы пояснить
$event = $mail = $user = $null
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
Аналогично:
Код:
Код: Выделить всё
$event = $null
$mail = $null
$user = $nullА вот тут:
Цитата alexander_stepanov1:
$event = Get-WinEvent -FilterXPath $filter -LogName Security -MaxEvent 1 -ComputerName $_.DnsHostName
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
уже «наш фильтр» задействуется. Для каждой машины получаем из журнала безопасности последнее событие успешной[/i] регистрации пользователя, локально или посредством RDS.
Цитата alexander_stepanov1:
if($event) {
$user = $event.Properties[5].Value
if($user) {
$mail = (Get-ADUser $user -Properties mail).mail
}
}
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
Если таковое событие найдено, попытаться получить из его свойств имя пользователя. Если таковое получено, попытаться получить из AD его почту.
Цитата Kazun:
[pscustomobject]@{ ComputerName = $_.Name
UserName = $user
MailAddress = $mail
}
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
Оформить потребные свойства в пользовательский объект.
Повторить для каждой из полученного перечня машин.
Цитата alexander_stepanov1:
и почему у нас именно такое условие поиска?
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней
Потому, что это именно то условие, которое потребно. Базовые начала:
10 критически важных event ID для мониторинга / Блог компании Netwrix / Хабрахабр
.-
alexander_stepanov1