You need to enable JavaScript to run this app. 使用PowerShell搜索AD计算机description属性 查询用户最后登录设备
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell搜索AD计算机description属性 查询用户最后登录设备

问题修复方案

现有代码的核心问题

  • 最早的错误代码中,循环内误用了全局数组变量$hanne,而不是当前循环的单条账号变量$item,导致匹配条件完全错误
  • 后续编写的代码中,通过select samaccountname获取到的是包含samaccountname属性的PS自定义对象,不是纯账号字符串,直接拼接进Filter会导致匹配失败
  • AD Filter的模糊匹配必须显式添加通配符*,否则只会做完全相等匹配,无法命中中间包含账号的description属性值
  • 字符串变量直接嵌入双引号格式的AD Filter时可能存在解析异常,推荐使用脚本块格式的Filter语法规避问题

调整后可直接运行的完整代码

# 填入要查询的用户显示名列表
$navne = "显示名1","显示名2","显示名3"

# 批量查询对应samaccountname,直接展开为纯字符串数组
$usernames = foreach ($user in $navne) {
    $adUser = Get-ADUser -Filter "displayname -eq '$user'" -ErrorAction SilentlyContinue
    if ($adUser) {
        $adUser.samaccountname
    } else {
        Write-Warning "未找到显示名为 $user 的用户账号"
    }
}

# 批量查询对应用户最后登录的计算机
foreach ($account in $usernames) {
    # 拼接带通配符的匹配字符串
    $matchStr = "*$account*"
    # 查询符合条件的计算机,可按需选择返回的属性
    Get-ADComputer -Filter {description -like $matchStr} -Properties description | Select-Object Name, description
}

可选优化说明

  • 如果需要输出更友好的结果,可以把用户显示名、账号、计算机名、登录时间整理为自定义对象输出,方便导出为CSV
  • 如果要提取description里的时间字段,可以用Split(',')方法拆分属性值获取对应字段
  • 如果你需要限制只查启用状态的计算机,可以在Filter里追加Enabled -eq $true的条件

内容的提问来源于stack exchange,提问作者Christopher Jensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 21:45:03