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

如何用VBS获取本地用户最后密码设置日期?现有代码无法获取数据

获取本地用户最后密码设置日期的VBS脚本修正方案

原代码的核心问题是没有调用Win32_UserAccount类的PasswordLastSet属性,同时该属性返回的是WMI格式的时间戳,需要转换为可读的日期格式。以下是修正后的脚本:

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
' 明确查询需要的字段,提升执行效率
Set colItems = objWMIService.ExecQuery("Select Name, PasswordChangeable, PasswordLastSet from Win32_UserAccount Where LocalAccount = True")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("D:\users.txt", True)

For Each objItem in colItems
    ' 跳过指定系统用户和不可修改密码的用户
    If objItem.Name = "Administrator" Or _
       objItem.Name = "Guest" Or _
       objItem.Name = "Admin" Or _
       objItem.PasswordChangeable = False Then
        Continue For
    End If
    
    ' 写入基础用户信息
    objFile.Write "用户名: " & objItem.Name & vbCrlf
    objFile.Write "密码可修改: " & objItem.PasswordChangeable & vbCrlf
    
    ' 处理并写入最后密码设置日期
    If Not IsNull(objItem.PasswordLastSet) Then
        ' 将WMI时间戳转换为本地可读的日期时间格式
        dtPasswordLastSet = WMIDateStringToDate(objItem.PasswordLastSet)
        objFile.Write "最后密码设置日期: " & Day(dtPasswordLastSet) & "/" & Month(dtPasswordLastSet) & "/" & Year(dtPasswordLastSet) & " " & Time(dtPasswordLastSet) & vbCrlf
    Else
        objFile.Write "最后密码设置日期: 无记录" & vbCrlf
    End If
    objFile.Write "-------------------------" & vbCrlf
Next

objFile.Close
WScript.Echo "数据已导出到D:\users.txt"

' 转换WMI标准日期时间格式为本地日期的工具函数
Function WMIDateStringToDate(dtmDate)
    WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
                               Mid(dtmDate, 7, 2) & "/" & _
                               Left(dtmDate, 4) & " " & _
                               Mid(dtmDate, 9, 2) & ":" & _
                               Mid(dtmDate, 11, 2) & ":" & _
                               Mid(dtmDate, 13, 2))
End Function

关键修正说明:

  • 新增PasswordLastSet属性的查询与转换逻辑,通过自定义函数将WMI返回的UTC时间戳转为本地可读的日期时间
  • 简化用户过滤逻辑,用Continue For替代冗余的Do While循环结构
  • 优化输出格式,增加分隔线提升文件可读性
  • 处理PasswordLastSet为空的边界情况(部分特殊账户可能无此记录)

内容的提问来源于stack exchange,提问作者Alberto Alonso García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:50:38