访问审查需求:如何获取含ManagedBy值的AD安全组并显示其全名?
获取指定Active Directory安全组列表的优化方案
你当前的代码存在两个核心问题:一是ManagedBy字段返回的是AD对象的可分辨名称(DN)而非全名,二是用-Properties *会加载所有属性,拖慢执行效率。以下是优化后的解决方案:
优化代码
Get-ADGroup -Filter {ManagedBy -ne "$null" -and GroupCategory -eq "Security"} -Properties ManagedBy | Select-Object Name, SamAccountName, @{Name="ManagedByFullName"; Expression={ if ($_.ManagedBy) { (Get-ADObject -Identity $_.ManagedBy -Properties DisplayName).DisplayName } }}
关键说明
- 过滤器优化:用
ManagedBy -ne "$null"替代Managedby -contains "*",能精准筛选出ManagedBy字段有有效值的安全组,避免匹配空值或格式无效的条目。 - 属性按需加载:把
-Properties *改成明确指定ManagedBy,减少不必要的属性加载,提升命令运行速度。 - 转换为全名:通过计算属性
ManagedByFullName,调用Get-ADObject根据ManagedBy的DN获取对应的DisplayName(即全名)。Get-ADObject兼容用户、组等各类AD对象管理者的场景,比仅针对用户的Get-ADUser适用性更强。
内容的提问来源于stack exchange,提问作者ak2595
相关产品推荐
相关产品推荐

