PowerShell使用Select提取属性后输出文件出现大量空白如何解决
问题原因
- 编码不匹配:PowerShell 5.1 版本中
Out-File默认使用*UTF-16LE(Unicode)*编码,用普通文本编辑器以UTF-8/ASCII编码打开文件时,每个字符之间会被识别出空字节,视觉上表现为大量空白。 - 输出结构问题:
Select EmailAddress返回的是携带EmailAddress属性的PowerShell自定义对象,不是纯邮箱字符串,Out-File会保留对象的格式化输出结构,产生多余空行、表头残留类空白内容。 - 冗余查询:
-Properties *会拉取AD用户的所有属性,大幅拖慢查询速度,对提取邮箱地址无额外帮助。
修正方案
你可以根据使用场景选择任意一种实现:
# 方案1:导出纯邮箱字符串,无多余格式,编码为UTF-8 Get-ADUser -Filter * -Properties EmailAddress | Select-Object -ExpandProperty EmailAddress | Out-File "C:\T2\EMailAddresses.txt" -Encoding UTF8
# 方案2:导出为CSV格式,方便Excel或其他脚本后续处理 Get-ADUser -Filter * -Properties EmailAddress | Select-Object EmailAddress | Export-Csv "C:\T2\EMailAddresses.csv" -Encoding UTF8 -NoTypeInformation
内容的提问来源于stack exchange,提问作者JRN
相关产品推荐
相关产品推荐

