用于统计本地用户的PowerShell脚本编写与问题咨询
原脚本存在的问题
- 状态判断逻辑失效:
Get-LocalUser返回的Enabled属性是原生布尔值($true/$false),不是字符串类型的'true'/'false',原写法中$user.Enabled -eq 'false'永远不会成立,导致非活跃用户完全无法被识别 - 计数逻辑错误:非活跃用户计数时错误将用户对象本身累加到计数变量,而非累加数值1;同时存在变量名拼写错误,输出时使用的
$inactif和预先定义的$inactiv不匹配,会直接输出空值 - 索引逻辑冗余错位:foreach遍历本身不需要手动维护数组索引
$i,且原脚本中匹配到活跃用户时不会对$i做递增,会导致索引取值完全错位 - 输出逻辑不合理:原脚本每匹配到一个非活跃用户就输出一次临时累计值,遍历结束后没有统一的汇总结果,也没有统计活跃用户的总数
修正后可直接运行的脚本
cls # 获取本地所有用户账户 $users = Get-LocalUser # 初始化计数变量 $activeCount = 0 $inactiveCount = 0 Write-Host "***** 本地账户状态统计 *****" foreach ($user in $users) { if ($user.Enabled -eq $true) { $activeCount++ Write-Host "账户 $($user.Name) 为活跃状态" } else { $inactiveCount++ Write-Host "账户 $($user.Name) 为非活跃状态" } } # 输出最终汇总统计 Write-Host "`n===== 统计结果汇总 =====" Write-Host "本地账户总数量:$($users.Count)" Write-Host "活跃账户数量:$activeCount" Write-Host "非活跃账户数量:$inactiveCount"
使用说明
- 脚本可直接在PowerShell中运行,普通用户权限即可读取本地用户列表,部分系统受限环境需右键以管理员身份启动PowerShell后执行
- 运行时会逐行展示每个本地账户的启用状态,全部遍历完成后自动输出总账户数、活跃/非活跃账户的汇总统计值
内容的提问来源于stack exchange,提问作者gixer
相关产品推荐
相关产品推荐

