Чтобы получить весь перечень пользователей присутствует в AD, вы можете использовать:
Get-ADUser -filter *
Для получения последнего входа в систему, вы можете использовать нижеуказанная функция:
Import-Module ActiveDirectory
function Get-ADUserLastLogon([string]$userName)
{
$dcs = Get-ADDomainController -Filter {Name -like "*"}
$time = 0
foreach($dc in $dcs)
{
$hostname = $dc.HostName
$user = Get-ADUser $userName | Get-ADObject -Properties lastLogon
if($user.LastLogon -gt $time)
{
$time = $user.LastLogon
}
}
$dt = [DateTime]::FromFileTime($time)
Write-Host $username "last logged on at:" $dt }
# Call the function with parameter
Get-ADUserLastLogon -UserName TestUser01
Примечание: для этого вы можете использовать различные фильтры.
Ссылка Ссылка: Technet
В вашем случае, я уже вижу вы выборки всех деталей, за исключением последнего входа в систему. Используйте вышеуказанную функцию, сохраните результат в arraylist и просто добавьте его в свой конечный объект. Это должно дать желаемый результат вместе с Get-AdComputer, который вы уже используете.
К сожалению, Active Directory не фиксирует информацию для каждого соответствующего имени хоста, сопоставленного с пользователем, зарегистрированным в системе. Пользователь может войти с любого из компьютеров, подключенных к домену.
Вы можете попробовать включить аудит безопасности затем к каждому DC в домене, посмотрите на журнал безопасности и посмотреть, где что пользователь вошел в систему с.
Но я не думаю, что это будет зафиксировано определенным образом. Они могут использовать что-то общее для всех пользователей. (Я не уверен, что вы ищете картографию и вот почему я написал)
Надеюсь, это поможет.