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

查询本地计算机域用户最后登录时间,清理90天未登录用户文件夹

解决域管理员用户本地登录时间查询不准确的问题

问题根源

你使用的Win32_NetworkLoginProfile类的LastLogon字段,对于域用户(尤其是拥有本地管理员权限的),确实可能返回AD域中的登录时间,或是本地非交互式操作(如服务运行、远程管理命令执行)的时间,而非用户实际交互式登录本地计算机的时间,这就是导致数据不一致的核心原因。

解决方案:改用Win32_UserProfile类查询

Win32_UserProfile类直接对应本地存储的用户配置文件,其LastUseTime字段记录的是该配置文件最后被加载的时间,更准确反映用户实际登录使用本地计算机的情况,完全适配你的清理场景。

替换后的PowerShell命令

Get-CimInstance -Class Win32_UserProfile | 
    Where-Object { $_.LocalPath -match 'Users\\' -and !$_.Special } |
    Select-Object `
        @{Name="UserName"; Expression={$_.LocalPath.Split('\')[-1]}},
        LocalPath,
        @{Name="LastUsed"; Expression={[System.Management.ManagementDateTimeConverter]::ToDateTime($_.LastUseTime).ToString("dd MMMM yyyy HH:mm:ss")}},
        SID |
    Format-Table -AutoSize

命令说明

  • 使用Get-CimInstance替代Get-WmiObject:CIM是WMI的更新版本,性能更好且兼容性更强。
  • Where-Object过滤:排除系统特殊配置文件(如Default User、Public),只保留普通用户配置文件。
  • UserName从LocalPath提取:因为域用户的Win32_UserProfile没有直接的用户名属性,通过配置文件路径的最后一段获取。
  • LastUsed转换LastUseTime:将WMI时间格式转为易读的日期字符串。

批量场景适配

针对你3000+台电脑的批量管理需求,可结合终端管理工具的批量执行能力,在命令中加入过滤条件(如筛选LastUsed早于90天前的配置文件),示例如下:

$threshold = (Get-Date).AddDays(-90)
Get-CimInstance -Class Win32_UserProfile | 
    Where-Object { 
        $_.LocalPath -match 'Users\\' -and 
        !$_.Special -and 
        [System.Management.ManagementDateTimeConverter]::ToDateTime($_.LastUseTime) -lt $threshold
    } |
    Select-Object UserName, LocalPath, LastUsed

验证建议

执行命令后,可手动核对用户配置文件的LastWriteTime(文件系统层面):

Get-ChildItem "C:\Users\目标用户名" | Select-Object LastWriteTime

与Win32_UserProfile返回的LastUsed时间交叉验证,确保数据准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:27:10