首页 > 解决方案 > Powershell命令查找允许登录计算机的用户列表

问题描述

我正在尝试找到一种使用 powershell 列出分配给计算机的登录权限的用户的方法。但如果可能的话,我无法找到语法。非常感谢任何帮助。

标签: powershellactive-directory

解决方案


如果您要查询ADUser明确限制其工作站登录的对象,您可以查询userWorkstations属性中的值。由于该属性是具有逗号分隔值的字符串,因此您可能需要在进行比较之前正确处理该数据。

$computer = 'computername'
Get-ADUser -Filter "userWorkstations -like '*$computer*'" -Properties userWorkstations |
    Where-Object { ($_.userWorkstations -split ',') -contains $computer }

您不受此解决方案的约束,因为有几种方法可以检索您想要的数据。我选择使用-split ',',因为这将创建一个数组,-contains操作员可以在其中找到精确匹配。

在允许通配符 ( ) 匹配中使用-like运算符。仅当特定工作站是属性中列出的唯一工作站时才会起作用。您可能会放弃所有这些并获得相同的结果。这是值得测试的,因为性能可能会有所不同[1]-Filter*-equserWorkstations-like

Where-Object这里提供了精确匹配。由于 AD-Filter参数不支持包含运算符,因此您必须依靠-like通配符来分隔字符串。由于-like 'system1*'也会​​ match system12334,我们需要确保我们只返回我们想要的完全匹配。


注意:如果您计算机上的本地安全策略允许域用户在本地或交互式登录,则用户没有userWorkstations属性值意味着用户可以登录到该计算机。因此,要全面了解,您需要检查机器的本地安全策略并确定实际适用于哪些域用户。


[1] 我个人的有限测试表明,使用-Filterwith -likeoperator 将我的查询时间缩短了 59%。


推荐阅读