PowerShell筛选AD用户所属DIR-前缀组返回空列表的解决方法
筛选失效原因
memberof属性展开后输出的是组的可分辨名称(DN)纯字符串,格式形如CN=DIR-项目组,OU=权限组,DC=contoso,DC=com,并非携带CN属性的AD组对象,你写的$_.CN无法取到有效值,因此匹配结果为空。
可用命令
方案1:直接字符串匹配(性能最优,仅需返回组DN/后续不需要操作组属性时用)
Get-ADUser -Identity $username -Properties memberof | Select-Object -ExpandProperty memberof | Where-Object { $_ -like "CN=DIR-*" }
方案2:返回完整AD组对象(需要后续读取组描述、组类型等属性时用)
在字符串筛选后追加Get-ADGroup即可把DN解析为完整组对象:
Get-ADUser -Identity $username -Properties memberof | Select-Object -ExpandProperty memberof | Where-Object { $_ -like "CN=DIR-*" } | Get-ADGroup
补充:仅返回纯组名(不带DN路径)
如果不需要完整DN路径,只想拿到过滤后的组显示名称,可以追加处理逻辑:
Get-ADUser -Identity $username -Properties memberof | Select-Object -ExpandProperty memberof | Where-Object { $_ -like "CN=DIR-*" } | ForEach-Object { $_.Split(',')[0].Replace('CN=','') }
内容的提问来源于stack exchange,提问作者Unknown
相关产品推荐
相关产品推荐

