所有用户的上次login时间 – RDP服务器不在域上

我正在尝试获取Windows Server 2012上“所有用户”的“上次login时间”列表,但目前只知道如何列出单个用户login名,即:

net user username | findstr /B /C:"Last logon"

有任何想法吗?

* PS这台服务器的唯一目的是主持RDP连接; 不绑定到域/广告。

对于本地用户,您可以按以下方式使用带有ADSI的Powershell。

 $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}} 

如果您在域中,请创build一个像这样的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

在这个讨论中对Anthony Howell的荣誉。