powershell 可批量导出本地用户详细信息为 csv 或 excel 文件,需以管理员身份运行脚本,调用 get-localuser 并结合 select-object、pscustomobject 扩展属性(如 sid、组成员关系、中文列名等),再用 export-csv(utf8 编码)或 importexcel 模块导出。
在 windows 中,用 powershell 批量导出所有本地用户详细信息,核心是调用 get-localuser 获取用户对象,再用 export-csv 保存为 excel 可读的 csv 文件。默认只输出基础字段,要“详细信息”,需手动扩展属性(如 sid、启用状态、密码最后设置时间、全名、描述、组成员关系等)。
获取并整理本地用户完整属性
PowerShell 的 Get-LocalUser 默认不返回全部字段(比如密码策略、上次登录时间、所属组),需结合 System.Security.Principal.NTAccount 和 Get-LocalGroupMember 补充。推荐用自定义计算属性拼装数据:
- 用
Select-Object显式指定字段:Name、FullName、Description、Enabled、LastLogon、PasswordLastSet、PasswordRequired、PasswordChangeable、SID - 通过
[System.Security.Principal.SecurityIdentifier]把 SID 转为可读字符串 - 用
Get-LocalGroupMember -Group "Users"等方式查用户所属本地组(注意:一个用户可能属于多个组,需聚合为逗号分隔字符串) - 对空值字段(如 LastLogon、PasswordLastSet)做
if ($_.LastLogon) { $_.LastLogon } else { 'Never' }类处理,避免导出 null
一键导出为 CSV 文件(含中文列名和 UTF8 编码)
直接运行以下脚本即可生成带表头、中文列名、正确编码的 CSV,Excel 打开不乱码:
$users = Get-LocalUser | ForEach-Object {
$sid = $_.SID.Value
$groups = (Get-LocalGroupMember -Member "$($_.Name)" -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Group -Unique) -join ';'
[PSCustomObject]@{
用户名 = $_.Name
全名 = $_.FullName
描述 = $_.Description
是否启用 = if ($_.Enabled) { '是' } else { '否' }
密码必需 = if ($_.PasswordRequired) { '是' } else { '否' }
密码可更改 = if ($_.PasswordChangeable) { '是' } else { '否' }
最后登录时间 = if ($_.LastLogon) { $_.LastLogon.ToString('yyyy-MM-dd HH:mm:ss') } else { '从未登录' }
密码最后设置时间 = if ($_.PasswordLastSet) { $_.PasswordLastSet.ToString('yyyy-MM-dd HH:mm:ss') } else { '未设置' }
安全标识符(SID) = $sid
所属本地组 = $groups
}
}
$users | Export-Csv -Path "$env:USERPROFILE\Desktop\本地用户清单.csv" -Encoding UTF8 -NoTypeInformation
执行后会在桌面生成 本地用户清单.csv,双击可用 Excel 打开,中文列名清晰可读。
注意事项与常见问题
脚本需以管理员身份运行,否则部分属性(如 PasswordLastSet)可能无法读取或报错;若提示“找不到 Get-LocalUser”,说明系统版本过低(Windows 10 1607+ / Server 2016+ 才内置该命令);遇到“拒绝访问”错误,通常因账户无权读取其他用户的密码策略,可去掉 PasswordLastSet 等敏感字段再试;导出文件路径支持自定义,只要确保目标文件夹有写入权限。
扩展建议:导出为 Excel(.xlsx)格式
如果需要更美观的表格(如自动列宽、冻结首行),可安装免费模块 ImportExcel(需联网):
- 运行
Install-Module ImportExcel -Scope CurrentUser -Force - 将最后一行
Export-Csv替换为:$users | Export-Excel -Path "$env:USERPROFILE\Desktop\本地用户清单.xlsx" -AutoSize -TableName "Users" - 无需 Excel 应用程序,纯 PowerShell 生成标准 .xlsx 文件,支持图表、筛选、样式











