powershell - Powershell命令查找允许登录计算机的用户列表
问题描述
我正在尝试找到一种使用 powershell 列出分配给计算机的登录权限的用户的方法。但如果可能的话,我无法找到语法。非常感谢任何帮助。
解决方案
如果您要查询ADUser
明确限制其工作站登录的对象,您可以查询userWorkstations
属性中的值。由于该属性是具有逗号分隔值的字符串,因此您可能需要在进行比较之前正确处理该数据。
$computer = 'computername'
Get-ADUser -Filter "userWorkstations -like '*$computer*'" -Properties userWorkstations |
Where-Object { ($_.userWorkstations -split ',') -contains $computer }
您不受此解决方案的约束,因为有几种方法可以检索您想要的数据。我选择使用-split ','
,因为这将创建一个数组,-contains
操作员可以在其中找到精确匹配。
在允许通配符 ( ) 匹配中使用-like
运算符。仅当特定工作站是属性中列出的唯一工作站时才会起作用。您可能会放弃所有这些并获得相同的结果。这是值得测试的,因为性能可能会有所不同[1]。-Filter
*
-eq
userWorkstations
-like
Where-Object
这里提供了精确匹配。由于 AD-Filter
参数不支持包含运算符,因此您必须依靠-like
通配符来分隔字符串。由于-like 'system1*'
也会 match system12334
,我们需要确保我们只返回我们想要的完全匹配。
注意:如果您计算机上的本地安全策略允许域用户在本地或交互式登录,则用户没有userWorkstations
属性值意味着用户可以登录到该计算机。因此,要全面了解,您需要检查机器的本地安全策略并确定实际适用于哪些域用户。
[1] 我个人的有限测试表明,使用-Filter
with -like
operator 将我的查询时间缩短了 59%。
推荐阅读
- reactjs - 在 Docker 上启动并通过 IP 提供服务时,UI 无法访问节点服务器
- python - 将多个 .py 文件转换为 .exe
- c# - 如何强制浏览器下载 pdf 文件而不是预览
- git - PhpStorm - 嵌套的 Git 存储库
- flutter - ListView.Builder 仅显示在 Container 内
- math - coq-HoTT:如何证明 1 < 2?
- python - 在 powershell 中运行 python 脚本
- ios - CMClock Swift 示例
- c# - 如何画一个弧形箭头?
- c# - VSTO Excel 文档级别自定义无法使用“msbuild”命令构建