Как массово узнать последнюю дату входа пользователя на RDS ферму
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами научились выявлять проблему с замедлением компьютера и нагрузкой CPU под 100%, и всему был виной встроенный антивирус Chrome под названием software reporter tool. Сегодня у меня задача слегка иная, но не менее интересная. Нужно получить список пользователей из определенной OU и узнать дату их последнего входа на RDS ферму.
Постановка задачи
И так есть Active Directory и есть развернутая ферма Remote Desktop Services. Необходимо определить для пользователей из определенного организационного подразделения, когда они последний раз использовали терминал. Делать я это буду по дате изменения перемещаемого профиля пользователя. Все данные нужно получить в виде удобной таблице Exel.
Получение списка пользователей из определенного OU
Первым этапом нам необходимо получить список пользователей из определенного OU. Запустите PowerShell ISE и выполните скрипт, единственное поменяв на свою OU.
Get-ADUser -SearchBase $OU -Filter * | select samaccountname | Out-File c:\scripts\ECP_Users.txt
Получение даты изменения перемещаемого профиля
Я буду запускать данный скрипт на файлом сервере, где лежат профили пользователей и так же буду использовать переменную $PSScriptRoot, по умолчанию она находится в профиле пользователя от имени которого вы работаете, кстати посмотреть вы можете вот такой командой:
Сам скрипт по сопоставлению списка пользователей и их профилей:
$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 файл, который нужно будет преобразовать и разбить по столбцам, как это делать смотрите по ссылке.
Далее, когда вы сформировали столбцы, может потребоваться удалить пустые ячейки в документе, как это делать я так же описывал. На выходе у меня получился красиво читаемый документ.
На этом можно заканчивать, мы с вами полностью получили информацию, о том когда последний раз использовался перемещаемый профиль пользователей из определенной OU. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.