使用Get-ADUser结合Select后部分列返回{}或ADPropertyValueCollection问题
解决Get-ADUser筛选属性返回{}或ADPropertyValueCollection的问题
问题原因
- 属性名不匹配:AD中
LastName并非原生属性,它是Surname的别名,直接调用会返回空集合;FullName也不是AD用户的默认属性,通常用Name或DisplayName替代。 - 属性未赋值或未加载:若用户对象未设置目标属性值,或未通过
-Properties参数指定加载该属性,就会返回空的ADPropertyValueCollection(显示为{})。 - 多值属性特性:AD部分属性为多值类型,即便无数据也会返回集合对象,导出CSV时会显示其类型名称。
修复方案
1. 使用正确的AD原生属性
替换错误属性名,调用AD内置属性:
Get-ADUser -Properties DisplayName | Select-Object Surname, Name, DisplayName
Surname对应用户姓氏,Name是AD用户的名称属性,DisplayName为用户显示全名。
2. 用计算属性映射别名
如果需要保留LastName/FullName这类别名(比如报表格式要求),通过计算属性将原生属性映射过去:
Get-ADUser -Properties * | Select-Object Surname, @{Name='LastName'; Expression={$_.Surname}}, @{Name='FullName'; Expression={$_.DisplayName}}, DisplayName
- 强制将
Surname赋值给LastName,DisplayName赋值给FullName,避免空集合返回。
3. 导出CSV时处理类型显示
若导出CSV仍出现类型名称,可将属性强制转为字符串:
Get-ADUser -Properties * | Select-Object Surname, @{Name='LastName'; Expression={[string]$_.Surname}}, @{Name='FullName'; Expression={[string]$_.DisplayName}}, DisplayName | Export-Csv -Path "ADUsers.csv" -NoTypeInformation
[string]会将空集合转为空字符串,导出后CSV显示正常。
内容的提问来源于stack exchange,提问作者Noemie
相关产品推荐
相关产品推荐

