Я пытаюсь получить список «времени последнего входа в систему» для «всех пользователей» в Windows Server 2012, но в настоящее время знаю только, как перечислить вход для одного пользователя, а именно:
net user username | findstr /B /C:"Last logon"
Любые идеи?
* P.S. Единственная цель этих серверов - поддерживать RDP-соединения; не привязан к домену / AD.
Для местный пользователи, вы можете использовать Powershell с ADSI следующим образом.
$comp=[adsi]"WinNT://$($env:ComputerName)"
$users = $comp.Children | ?{ $_.SchemaClassName -eq 'User' }
$users | select @{L="Name";E={$_.psbase.Properties.Name.Value}},@{L="LastLogin";E={$_.psbase.Properties.LastLogin.Value}}
Если вы находитесь в домене, создайте такой сценарий PowerShell;
Import-Module ActiveDirectory
function Get-ADUsersLastLogon()
{
$dcs = Get-ADDomainController -Filter {Name -like "*"}
$users = Get-ADUser -Filter *
$time = 0
$exportFilePath = "c:\lastLogon.csv"
$columns = "name,username,datetime"
Out-File -filepath $exportFilePath -force -InputObject $columns
foreach($user in $users)
{
foreach($dc in $dcs)
{
$hostname = $dc.HostName
$currentUser = Get-ADUser $user.SamAccountName | Get-ADObject -Server $hostname -Properties lastLogon
if($currentUser.LastLogon -gt $time)
{
$time = $currentUser.LastLogon
}
}
$dt = [DateTime]::FromFileTime($time)
$row = $user.Name+","+$user.SamAccountName+","+$dt
Out-File -filepath $exportFilePath -append -noclobber -InputObject $row
$time = 0
}
}
Get-ADUsersLastLogon
Взял из там
Некоторое время назад я столкнулся с подобной проблемой. Это был код, который дал нужные мне результаты. Работает даже для локальных учетных записей.
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"
$adsi.Children | where {$_.SchemaClassName -eq 'user'} | ft name,lastlogin
Престижность Энтони Хауэлла в это обсуждение.
Добрый день. Спустя несколько лет я отвечу на этот вопрос :)
Может быть, кому-то вроде меня это пригодится.
Используйте WMI для запроса объекта Win32_UserProfile (на каждом сервере, независимо от того, находится он в домене или нет) и получите поля LocalPath и LastUseTime (как минимум). Сопоставьте последний раздел Пути с вашим AD (при необходимости), чтобы предоставить дополнительную информацию.
Нам это было нужно несколько месяцев назад, и это сработало отлично. Мы удаленно отправили его на все серверы через PS-Invoke и экспортируем результаты в .csv для пакетной обработки.
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ee886409(v%3Dvs.85)