我们有一个终端服务器,通过 Active Directory 组限制特定用户使用。一个用户有访问权限,但早在 2015 年 3 月,他的访问权限就被取消了。
当我Get-WmiObject -class Win32_NetworkLoginProfile | Select-Object Name,LastLogon
在 PowerShell 中运行时,该用户会列出今天的日期和时间,但该用户无法登录。
为什么会出现这些?已离开公司并被删除的其他用户会显示他们上次登录的时间。
答案1
被拒绝的用户显示最近的登录时间
我们有一个终端服务器,通过 Active Directory 组限制特定用户使用。一个用户有访问权限,但早在 2015 年 3 月,他的访问权限就被取消了。
当我在 PowerShell 中运行 Get-WmiObject -class Win32_NetworkLoginProfile | Select-Object Name,LastLogon 时,该用户会列出今天的日期和时间,但该用户无法登录。
为什么会出现这些?已离开公司并被删除的其他用户会显示他们上次登录的时间。
好的,因此离开公司的用户具有预期LastLogon
值,而当您运行 PowerShell 命令时,这个“受限制”(但未被解雇的员工)帐户没有预期值。
当你运行该Get-WmiObject -class Win32_NetworkLoginProfile
命令时,查询用户的网络登录值在您使用的语法中,它并不特定于特定的机器或服务器,因此这将是使用该帐户在任何设备上最后一次登录网络的值。
- 要比较
NET USER /DOMAIN <Username>
使用相同的用户名运行,您将看到该字段的日期时间戳Last Logon
与问题中的 WMI PowerShell 命令等相同。
这解释了为什么您会看到这种情况,对于受限制但未被终止的帐户,该帐户可能会登录到您环境中已终止的帐户所没有的其他加入域的计算机。
下面是一个改进的查询,它针对的是特定用户帐户在特定服务器或机器。
PowerShell 命令(精炼)
# connecting to a remote machine using current identity:
$ComputerName = 'SomeServerNameOrIP'
$AccountName = 'AccountNameToSearch'
Get-WMIObject -Class Win32_NetworkLoginProfile -ComputerName $ComputerName |
Where {$_.name -match $AccountName} | Select-Object Name,LastLogon,LogonServer
更多资源
Win32_NetworkLogin 配置文件
Win32_NetworkLoginProfile 类表示 Win32 系统上特定用户的网络登录信息。这包括但不限于密码状态、访问权限、磁盘配额和登录目录路径。
上次登录
数据类型 DateTime
LastLogon 属性表示用户上次登录系统的日期和时间。此值是根据自 1970 年 1 月 1 日 00:00:00 以来经过的秒数计算得出的。此值的格式为 yyyymmddhhmmss.mmmmmm sutc。例如:19521201000230.000000 000
NETLOGIN - Network login information for a particular user.