You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并Get-ADComputer与Get-ADUser获取计算机及最后登录用户

合并Get-ADComputer与Get-ADUser获取计算机及最后登录用户信息

方法一:利用AD计算机对象内置属性(非实时批量查询)

这种方法直接从AD数据库读取计算机记录的最后登录用户,无需目标计算机在线,查询速度快,但数据时效性受AD复制周期限制。

示例脚本:

Get-ADComputer -Filter 'Name -like "Nany-*"' -Properties CN, IPv4Address, LastLoggedOnUser | ForEach-Object {
    # 初始化用户信息默认值
    $userName = "无记录"
    $samAccount = "无记录"

    # 若存在最后登录用户的LDAP识别名,查询用户详情
    if ($null -ne $_.LastLoggedOnUser) {
        try {
            $adUser = Get-ADUser -Identity $_.LastLoggedOnUser -Properties Name, SamAccountName -ErrorAction Stop
            $userName = $adUser.Name
            $samAccount = $adUser.SamAccountName
        } catch {
            $userName = "用户查询失败:$($_.Exception.Message)"
        }
    }

    # 合并计算机与用户信息输出
    [PSCustomObject]@{
        计算机名称 = $_.CN
        IPv4地址 = $_.IPv4Address
        最后登录用户名 = $userName
        用户Sam账号 = $samAccount
    }
} | Export-CSV "C:\Computers&Users.csv" -NoTypeInformation -Encoding UTF8

关键说明:

  • 在Get-ADComputer中添加LastLoggedOnUser属性,该字段存储最后登录用户的LDAP识别名(DN)。
  • 通过Get-ADUser根据DN拉取用户姓名、Sam账号等信息,同时处理查询失败的异常场景。
  • 加入-Encoding UTF8确保CSV文件中文内容显示正常。

方法二:查询远程计算机事件日志(实时数据)

如果需要获取最新的最后登录用户,可以查询目标计算机的安全日志(事件ID 4624,交互式登录事件),但要求目标计算机在线且你拥有读取远程安全日志的权限。

示例脚本:

Get-ADComputer -Filter 'Name -like "Nany-*"' -Properties CN, IPv4Address | ForEach-Object {
    $computerName = $_.CN
    $ipv4 = $_.IPv4Address
    $lastLoggedUser = "无记录/无法查询"

    try {
        # 查询最近1条交互式登录事件(登录类型2代表本地/远程桌面交互式登录)
        $logonEvent = Get-WinEvent -ComputerName $computerName -FilterHashtable @{
            LogName = 'Security'
            ID = 4624
            Data = '2'
        } -MaxEvents 1 -ErrorAction Stop

        if ($logonEvent) {
            # 从事件属性中提取用户名(第6个属性值,索引从0开始)
            $lastLoggedUser = $logonEvent.Properties[5].Value
        }
    } catch {
        $lastLoggedUser = "查询失败:$($_.Exception.Message)"
    }

    [PSCustomObject]@{
        计算机名称 = $computerName
        IPv4地址 = $ipv4
        最后登录用户 = $lastLoggedUser
    }
} | Export-CSV "C:\Computers&Users.csv" -NoTypeInformation -Encoding UTF8

关键说明:

  • 登录类型2对应交互式登录,若需包含其他登录场景(如服务登录),可移除Data = '2'条件。
  • 若目标计算机离线或权限不足,会捕获异常并记录具体错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:40:30