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

PowerShell查询AD用户问题:筛选无经理且usertype为Employee的用户

问题分析与脚本修改

原脚本存在三个关键问题:

  1. Where-Object语法错误:缺少包裹条件的花括号,且未通过$_引用当前对象属性,导致过滤逻辑完全失效
  2. 属性丢失:Select语句提前执行,过滤所需的userType和Manager属性被丢弃,无法进行有效判断
  3. 效率低下:-Filter *和-Properties *会拉取所有AD用户的所有属性,完全没必要

推荐修改方案(AD层面过滤,效率最高)

直接在AD查询阶段完成过滤,只拉取符合条件的用户,避免无用数据传输:

# 使用PowerShell原生Filter
Get-ADUser -Filter { userType -eq 'Employee' -and Manager -notlike "*" } -Properties Department | Select-Object Name, SamAccountName, Department

或者用更可靠的LDAP Filter(对空属性判断更精准):

Get-ADUser -LDAPFilter "(&(userType=Employee)(!manager=*))" -Properties Department | Select-Object Name, SamAccountName, Department

备选方案(拉取后过滤,适合调试)

如果需要先获取数据再过滤,需确保保留过滤所需属性,同时修正Where-Object语法:

Get-ADUser -Filter * -Properties Department, userType, Manager | 
    Where-Object { $_.userType -eq 'Employee' -and $_.Manager -eq $null } |
    Select-Object Name, SamAccountName, Department

关键说明

  • 必须确保在过滤前保留userType和Manager属性,否则无法判断条件
  • 优先使用AD层面过滤(-Filter或-LDAPFilter),能大幅提升脚本执行效率,尤其是在大型AD环境中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:05:03