首页/系统/Windows 运维速查/Get-LocalUser 查询本地用户

Get-LocalUser 查询本地用户

对象化列出本地用户:启用状态、密码上次设置/到期、最后登录;筛选夜表与导出 CSV 都方便。

Windows 运维速查系统更新于 2026-10-13

命令是干什么的

Get-LocalUser 是 Windows 本地账户的对象化查询入口:一次拿到启用状态、上次登录、上次设置密码时间与密码到期时间,可直接筛选、排序、导出 CSV。它取代了 net user 的文本解析思路,适合审计脚本与批量巡检;域账户不在其范围内,域内请改用 Get-ADUser。

和 net user 的区别

net user 输出的是文本,需要正则解析且字段顺序随版本变化;Get-LocalUser 返回对象,字段可直接访问、筛选与序列化,写自动化脚本更可靠。两者覆盖的是同一份本机账户数据(本地 SAM 数据库),差别在取数方式而非范围。

Get-LocalUser 只覆盖本机账户:域账户、Azure AD 账户以及服务运行上下文使用的虚拟账户都不在其中,跨范围清点要分别用对应命令。

基本信息

适用平台Windows 10 1607 及以后、Server 2016 及以后,PowerShell 5.1+
权限要求枚举本机账户普通用户即可,增删改需管理员
语法Get-LocalUser [-Name 账户名] | Where-Object { ... }
相关命令New-LocalUser、Enable-LocalUser、Set-LocalUser、Get-LocalGroupMember

典型使用场景

  • 安全巡检:找出启用状态但长期未登录的本地账户
  • 清点内置 Administrator 与 Guest 的启用情况,核对基线处置是否到位
  • 导出全机账户清单 CSV,作为资产与合规台账
  • 排查口令策略:哪些账户被设置成密码永不过期
  • 账户变更前后做前后对比,留存操作痕迹

常用示例

常用示例
Get-LocalUser | Format-Table Name, Enabled, LastLogon, PasswordLastSet, PasswordExpires
Get-LocalUser | Where-Object { -not $_.Enabled }                          # 已停用账户
Get-LocalUser | Where-Object { $_.Enabled -and $null -eq $_.PasswordExpires }   # 启用且密码永不过期
Get-LocalUser -Name ops01 | Select-Object *
Get-LocalUser | Select-Object Name, Enabled, LastLogon | Export-Csv .\users.csv -NoTypeInformation -Encoding UTF8

字段读法

字段含义判读
Name账户名与 net user 显示一致
Enabled是否启用False 表示已停用
LastLogon上次登录时间部分场景不更新,需与事件 4624 交叉验证
PasswordLastSet上次设置密码时间远早于策略周期说明口令长期未轮换
PasswordExpires密码到期时间null 表示永不过期,属审计高风险项
PasswordExpires 为空有两种含义:账户设为“密码永不过期”,或该账户不参与密码策略。审计口径可统一按“未强制轮换”处理。
LastLogon 并不会被所有登录类型刷新,登录审计应以安全日志 4624 与 4625 为准;Get-LocalUser 更适合账户面清点而非登录溯源。

易错点

  • 把 LastLogon 当权威登录记录,它在部分场景不更新,结论需用事件日志复核
  • 用 Get-LocalUser 去查域账户会查不到,域内应改用 Get-ADUser
  • 直接拿结果批量停用账户而未先导出备份,容易误停仍在用的服务账号
  • 导出 CSV 未显式指定 UTF8,中文账户名在 Excel 里会显示乱码

数据来源与参考

  • Microsoft Learn:Get-LocalUser

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌