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

PowerShell Get-ADUser筛选语法求助:查询特定AD用户并导出CSV

问题分析与修正方案

核心错误点

  1. SamAccountName匹配规则错误:-like "svc_"未使用通配符,只会匹配完全等于svc_的账户,无法覆盖所有以svc_开头的账户,需改为svc_*。
  2. MemberOf属性判断逻辑错误:
    • MemberOf存储的是组的可分辨名称(DN),而非直观的组名,直接和disconnected字符串对比永远无法匹配。
    • MemberOf是数组类型,不能用-eq/-neq做判断,需用-contains/-notcontains检测数组是否包含目标组的DN。
  3. 性能冗余:先用Get-ADUser -Filter *拉取所有AD用户再过滤,会浪费大量资源,应直接在Get-ADUser的Filter参数中先筛选符合条件的账户。

修正后的脚本步骤

1. 先获取目标组的DN

通过组名获取其可分辨名称,避免硬编码DN:

$disconnectedGroupDN = (Get-ADGroup -Filter {Name -eq "disconnected"}).DistinguishedName

2. 查询以svc_开头且属于disconnected组的用户

Get-ADUser -Filter {SamAccountName -like "svc_*"} -Properties MemberOf | 
    Where-Object { $_.MemberOf -contains $disconnectedGroupDN }

3. 查询以svc_开头且不属于disconnected组的用户

Get-ADUser -Filter {SamAccountName -like "svc_*"} -Properties MemberOf | 
    Where-Object { $_.MemberOf -notcontains $disconnectedGroupDN }

4. 导出结果到CSV

在上述命令后追加导出逻辑即可:

# 示例:导出不属于disconnected组的用户到指定CSV文件
Get-ADUser -Filter {SamAccountName -like "svc_*"} -Properties MemberOf | 
    Where-Object { $_.MemberOf -notcontains $disconnectedGroupDN } |
    Export-Csv -Path $CSVfile -NoTypeInformation

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:07:19