Как массово узнать последнюю дату входа пользователя на RDS ферму

Как массово узнать последнюю дату входа пользователя на RDS ферму

data logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами научились выявлять проблему с замедлением компьютера и нагрузкой CPU под 100%, и всему был виной встроенный антивирус Chrome под названием software reporter tool. Сегодня у меня задача слегка иная, но не менее интересная. Нужно получить список пользователей из определенной OU и узнать дату их последнего входа на RDS ферму.

Постановка задачи

И так есть Active Directory и есть развернутая ферма Remote Desktop Services. Необходимо определить для пользователей из определенного организационного подразделения, когда они последний раз использовали терминал. Делать я это буду по дате изменения перемещаемого профиля пользователя. Все данные нужно получить в виде удобной таблице Exel.

Получение списка пользователей из определенного OU

Первым этапом нам необходимо получить список пользователей из определенного OU. Запустите PowerShell ISE и выполните скрипт, единственное поменяв на свою OU.

$OU = "OU=Пользователи,OU=Оргструктура,DC=root,DC=pyatilistnik,DC=org"
Get-ADUser -SearchBase $OU -Filter * | select samaccountname | Out-File c:\scripts\ECP_Users.txt

Получение списка пользователей из определенного OU

Получение даты изменения перемещаемого профиля

Я буду запускать данный скрипт на файлом сервере, где лежат профили пользователей и так же буду использовать переменную $PSScriptRoot, по умолчанию она находится в профиле пользователя от имени которого вы работаете, кстати посмотреть вы можете вот такой командой:

Get-ChildItem -Path $PSScriptRoot

Сам скрипт по сопоставлению списка пользователей и их профилей:

$users_file = "$PSScriptRoot\ECP_Users.txt"

$tsProfiles_path = "M:\Share\Profiles"

$users_tsProfiles_file = "$PSScriptRoot\ECP_Users_tsProfiles.csv"
"Username;FullName;LastWriteTime" | Out-File $users_tsProfiles_file

$tsProfiles_folders = Get-ChildItem $tsProfiles_path

foreach ($user in (Get-Content $users_file)) # | select -First 100
{
$user = $user.Trim()
$tsProfile_folder = $null
$tsProfile_folder = $tsProfiles_folders | ? {$_.Name -like "$user.Root*"}

"$user;$($tsProfile_folder.FullName);$($tsProfile_folder.LastWriteTime)" | Out-File $users_tsProfiles_file -Append
}

На выходе вы получите CSV файл, который нужно будет преобразовать и разбить по столбцам, как это делать смотрите по ссылке.

полученый csv файл со списком пользователей AD

Далее, когда вы сформировали столбцы, может потребоваться удалить пустые ячейки в документе, как это делать я так же описывал. На выходе у меня получился красиво читаемый документ.

Файл с удаленными пустыми ячейками Google Sheets

На этом можно заканчивать, мы с вами полностью получили информацию, о том когда последний раз использовался перемещаемый профиль пользователей из определенной OU. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *