Active Directory (AD) не хранит информацию о том, какой пользователь в данный момент вошел на компьютер в режиме реального времени. Для этой цели обычно используют аудит событий входа в систему на самих компьютерах или ведение журнала входов через другие средства мониторинга.
Тем не менее, вы можете использовать PowerShell для получения списка компьютеров из AD и попробовать определить последних пользователей, вошедших в систему, если эта информация была сохранена или отслежена с помощью logon scripts или других аудит систем.
1. Чтобы получить список всех компьютеров из AD, вы можете использовать следующий код PowerShell:
```powershell
Import-Module ActiveDirectory
# Список всех компьютеров
$computers = Get-ADComputer -Filter *
# Вывод информации о каждом компьютере
foreach ($computer in $computers) {
$lastLogon = Get-ADComputer $computer -Property LastLogonDate
Write-Host "Computer: $($computer.Name), Last Logon: $($lastLogon.LastLogonDate)"
}
```
2. Если была настроена политика аудита входа в систему на компьютерах домена и сохранилась информация о последнем входе, вы могли бы запросить это через WMI или CIM, но это потребует дополнительных привилегий и ресурсов в сети. Код для выполнения подобного запроса может выглядеть следующим образом:
```powershell
$credential = Get-Credential # Получить учетные данные для выполнения запроса
$computers = Get-ADComputer -Filter * -Property Name
foreach ($computer in $computers) {
try {
$lastLogonInfo = Get-WmiObject -Class Win32_NetworkLoginProfile -ComputerName $computer.Name -Credential $credential |
Sort-Object LastLogon -Descending |
Select-Object -First 1
$username = $lastLogonInfo.Name
$lastLogonTime = $lastLogonInfo.LastLogon
Write-Host "Computer: $($computer.Name), User: $username, Last Logon: $lastLogonTime"
} catch {
Write-Host "Cannot retrieve logon info for: $($computer.Name)"
}
}
```
Обратите внимание, что такой скрипт может быть дорогостоящим с точки зрения времени выполнения и использования сетевых ресурсов, поскольку каждый запрос к компьютеру может занять значительное время, и если доступ к компьютеру невозможен (например, он выключен), запрос вернет ошибку.
Написание более сложных и точных скриптов для получения информации о том, кто вошел на компьютер, требует настройки и использования дополнительных инструментов аудита и мониторинга, что выходит за рамки простого запроса к Active Directory.