如何扫描计算机列表并查找上次登录的用户以及该用户登录的日期

时间:2014-02-28 01:41:51

标签: powershell

我之前的stackoverflow问题中有以下脚本。它的作用是脚本成功扫描我的计算机列表,以报告我为每台计算机登录的用户ID。

但我正在寻找的是我列表中每台计算机的最后登录用户。我不想扫描Active Directory,因为我无权访问。这是我发现的代码让我在那里:

    Get-Content -Path c:\ListOfMachines.txt | % {
  Get-WmiObject -ComputerName $_ -Namespace root\cimv2 -Class Win32_ComputerSystem -erroraction silentlycontinue | % {
    "$($_.Name): $($_.username)"
  }
}

就像我说的那样,它可以扫描列表中的每台计算机,但我希望它能够报告最后登录的用户以及他们登录的日期。这是以前有人见过的吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用SID类中最新的LastUseTime获取用户Win32_UserProfile,并将其分配给$ User变量:

$last_user= Get-WmiObject -ComputerName $_ -Namespace root\cimv2 -Class Win32_UserProfile | Sort-Object -Property LastUseTime -Descending | Select-Object -First 1 
$UserSID = New-Object System.Security.Principal.SecurityIdentifier($last_user.sid) 
$User = $UserSID.Translate([System.Security.Principal.NTAccount])

格式化$ last_user:

中的日期
[Management.ManagementDateTimeConverter]::ToDateTime($last_user.LastUseTime)