Я пишу программу, одной из функций которой является получение текущих сеансов входа в систему на компьютере Windows. Он запрашивает WMI для текущих сеансов с типом входа 2 (интерактивный), тип входа 10 (удаленный интерактив) и тип входа 11 (кэшированный интерактив). Код у меня работает хорошо, за исключением одной вещи, которую я только что заметил. Когда я тестировал его в моей рабочей среде, все было хорошо, но теперь, когда я дома и вошел в систему за пределами нашей рабочей сети, я вообще не получаю никаких сессий - и я думал, что получу сеанс входа в систему в качестве кэшированного интерактивного сеанса.
Итак, я проверил это с помощью этого кода PS, взятого с этого сайта :
$computername = "mycomputername"
Get-WmiObject -Class Win32_LogonSession -ComputerName $computername |
foreach {
$data = $_
$id = $data.__RELPATH -replace """", "'"
$q = "ASSOCIATORS OF {$id} WHERE ResultClass = Win32_Account"
Get-WmiObject -ComputerName $computername -Query $q |
select @{N="User";E={$($_.Caption)}},
@{N="LogonTime";E={$data.ConvertToDateTime($data.StartTime)}}
}
который просто берет все сеансы входа в систему. И снова, как будто я не вошел в систему вообще:
Пользователь LogonTime
------------
mycomputername \ IUSR 22.01.2016, 12:07:50
mycomputername \ SYSTEM, 22.01.2016, 12:07:09
mycomputername \ LOCAL SERVICE 1/22 / 2016 12:07:11
mycomputername \ NETWORK SERVICE 22.01.2016 0:07:10
mycomputername \ ANONYMOUS LOGON 22.01.2016 0:08:03
Мое действительное имя пользователя не отображается ... Почему это может быть? Что я могу сделать, чтобы увидеть мой сеанс входа?
источник
Можно также использовать команду сервера терминалов QUERY :
Эта команда получит список всех вошедших в систему пользователей:
Результат может выглядеть следующим образом для локального входа, но я также проверил его для удаленного входа:
источник