PowerShell导出多OU下Proxyaddresses属性到CSV时报错如何解决
问题原因及修复方案
你遇到的输出为对象类型名的问题,核心原因是代码中计算属性里使用了全角弯引号’,PowerShell无法正确识别该符号作为引号边界,导致自定义的表达式没有执行,直接输出了proxyAddresses属性本身的集合对象类型名。
另外代码还有两处可优化项,避免后续出错:
- 不要使用
-Properties *加载所有AD用户属性,仅加载你需要的proxyAddresses即可,大幅提升查询效率,降低域控制器压力 - 增加空值判断,避免部分未配置
proxyAddresses的用户触发调用报错 - 新增编码参数避免导出CSV出现乱码
修正后可用代码
"ou=no gpo,ou=Staff, ou=offices,dc=ddddd,dc=ca", "ou=Staff win10,dc=ddddd,dc=ca" | ForEach-Object { Get-ADUser -Filter * -SearchBase $_ -Properties proxyAddresses } | Select-Object name, @{ Name='proxyAddresses' Expression={ if ($null -ne $_.proxyAddresses) { [string]::Join(";", $_.proxyAddresses) } else { "" } } } | Export-Csv c:\temp\all_proxyaddresses.csv -NoTypeInformation -Encoding UTF8
如果导出后仍有中文乱码,可将-Encoding UTF8替换为-Encoding Default使用系统默认编码导出。
内容的提问来源于stack exchange,提问作者lakeek
相关产品推荐
相关产品推荐

