Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней

Ответить
Настройки темы
PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток!

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

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

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

Отправлено: 19:30, 17-01-2016

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


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
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:46, 17-01-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

тут мы задаем условие для поиска:
$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
}
}

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

Отправлено: 21:27, 17-01-2016 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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 / Хабрахабр.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:33, 18-01-2016 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 07:48, 18-01-2016 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] PowerShell узнать по доменному имени имя учетной записи, авторизовавшейся последней

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - [решено] Как задать имя учетной записи Admin вместо Администратор по умолчанию PROCENT Автоматическая установка Windows 2000/XP/2003 13 19-08-2012 19:02
Доступ - [решено] Имя учетной записи пользователя Dimchik Microsoft Windows 7 4 11-11-2011 01:30
Свой ftp по доменному имени allianceplayer Microsoft Windows NT/2000/2003 13 09-07-2009 16:54
Имя учетной записи. poisonkit Вебмастеру 11 26-12-2007 09:58
как узнать дату последней записи на cd-r? Oleg87 Хочу все знать 3 22-08-2006 13:59




 
Переход