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

PowerShell 2 如何仅查询本地禁用用户账户

适配PowerShell 2的本地禁用用户账户查询方法

原命令的核心问题是未对账户的归属做过滤:Win32_UserAccount类在域环境下默认会枚举当前主机可关联的所有域内账户条目,不增加筛选规则的话,自然会把域用户和本地用户混在结果里返回。

最高效的改造方案

直接在WMI查询层完成本地账户、禁用状态的双重筛选,完全适配PowerShell 2原生环境,没有任何额外依赖:

Get-WmiObject Win32_UserAccount -Filter "LocalAccount = True AND Disabled = True" | Select-Object Name, Disabled, Domain
  • 该写法直接把筛选规则传给WMI引擎,不需要把全量的本地+域账户条目全部拉回PowerShell pipeline 做二次过滤,查询速度远高于原写法,哪怕域环境下关联的用户条目数量很多也能快速返回结果
  • LocalAccount = True是Win32_UserAccount类的原生属性,专门标记存储在本地SAM数据库中的账户,会自动排除所有来自域控制器的域用户条目
  • 筛选逻辑直接在WMI层做布尔值判断,避免了原写法把Disabled属性和字符串"True"比较的类型转换隐患

老旧系统兜底方案

如果遇到个别低版本Windows上WMI属性异常的情况,可以用本机计算机名匹配的规则做本地端筛选,逻辑可靠性拉满:

Get-WmiObject Win32_UserAccount | Where-Object {
    # 仅保留Domain字段匹配当前主机名的本地账户,再叠加禁用状态判断
    $_.Domain -eq $env:COMPUTERNAME -and $_.Disabled -eq $true
} | Select-Object Name, Disabled

注意事项

  • 整个流程用到的Get-WmiObject、Where-Object、Select-Object都是PowerShell 2自带的原生cmdlet,不需要安装RSAT工具、AD模块,也不依赖更高版本PowerShell才新增的CIM相关命令,在受限环境下可以直接运行
  • 不要混用PowerShell 3.0以上才引入的Get-CimInstance命令,否则在PowerShell 2环境下会直接报“找不到命令”的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 19:27:04