Сервер RDP - время последнего входа в систему всех пользователей RDP [дубликат]

Я пытаюсь получить список «времени последнего входа в систему» ​​для «всех пользователей» в Windows Server 2012, но в настоящее время знаю только, как указать вход для одного пользователя, а именно:

чистое имя пользователя | findstr / B / C: "Последний вход в систему"

Есть идеи?

* P.S. Единственная цель этого сервера - поддерживать RDP-соединения; не привязан к домену / AD.

1
задан 13 July 2016 в 23:23
4 ответа

Для локальных пользователей вы можете использовать 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}}
3
ответ дан 4 January 2021 в 10:07

Некоторое время назад я столкнулся с подобной проблемой. Это был код, который дал нужные мне результаты. Работает даже для локальных учетных записей.

$ adsi = [ADSI] "WinNT: // $ env: COMPUTERNAME" $ adsi.Children | где {$ _. SchemaClassName -eq 'user'} | ft name, lastlogin

Престижность Энтони Хауэлла в этом обсуждении .

1
ответ дан 4 January 2021 в 10:07

Если вы находитесь в домене, создайте такой сценарий 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

Взял из там

1
ответ дан 4 January 2021 в 10:07

Добрый день. Несколько лет спустя я отвечаю на этот вопрос :)

Может быть, кому-то вроде меня это пригодится.

Используйте WMI, чтобы запросить объект Win32_UserProfile (на каждом сервере, независимо от того, в домене он или нет) и получить поля LocalPath и LastUseTime (как минимум). Сопоставьте последний раздел Пути с вашим AD (при необходимости), чтобы предоставить дополнительную информацию.

Нам это было нужно несколько месяцев назад, и это сработало отлично. Мы удаленно отправили его на все серверы через PS-Invoke и экспортируем результаты в .csv для пакетной обработки.

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy /ee886409(v%3Dvs.85)[1277pting

1
ответ дан 4 January 2021 в 10:07

Теги

Похожие вопросы