PowerShell 导出 csv / 奇怪的输出

PowerShell exporting csv / Strange output

我是 PowerShell 的新手,在使用代码和脚本方面不是最出色的,但我正在努力学习。现在是问题!

我写了一个简短的脚本,它列出了具有特定属性的特定 OU 的所有用户。

Get-ADUser -Filter * -SearchBase “OU=XY,OU=XY,OU=XY,OU=XY,DC=XY,DC=XY” -Properties DisplayName, SAMAccountName, EmailAddress, msDS-UserPasswordExpiryTimeComputed, AccountExpirationDate, Company, StreetAddress, L, PostalCode, co | 
    select DisplayName, SAMAccountName, EmailAddress, @{ Name = "ExpiryDate"; Expression = { [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") } }, AccountExpirationDate, Company, StreetAddress, L, PostalCode, co | 
    Sort-Object -Property Company | 
    Format-Table -Autosize -Property Company, DisplayName, SAMAccountName, EmailAddress, AccountExpirationDate, ExpiryDate, StreetAddress, L, Postalcode, co

这工作正常,当在 运行 Powershell 的脚本中时,一切都正确显示,但是当我尝试将信息导出到 csv 文件时:

Get-ADUser -Filter * -SearchBase “OU=XY,OU=XYs,OU=XY,OU=XY,DC=XY,DC=XY” -Properties DisplayName, SAMAccountName, EmailAddress, msDS-UserPasswordExpiryTimeComputed, AccountExpirationDate, Company, StreetAddress, L, PostalCode, co | 
    select DisplayName, SAMAccountName, EmailAddress, @{ Name = "ExpiryDate"; Expression = { [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") } }, AccountExpirationDate, Company, StreetAddress, L, PostalCode, co | 
    Sort-Object -Property Company | 
    Format-Table -Autosize -Property Company, DisplayName, SAMAccountName, EmailAddress, AccountExpirationDate, ExpiryDate, StreetAddress, L, Postalcode, co | 
    Export-Csv -Path c:\xy.csv

我在文件中得到了一些奇怪的字符,如下所示:

27c87ef9bbda4f709f6b4002fa4af63c,,,,,

但这只有在为 table 选择了一定数量的 properties/columns 之后才会发生。我只选择了 4 个它工作正常的属性。我错过了什么?

如有任何帮助,我们将不胜感激!

你能试试 out-file 命令吗?

Get-ADUser -Filter * -SearchBase “OU=XY,OU=XYs,OU=XY,OU=XY,DC=XY,DC=XY” -Properties DisplayName, SAMAccountName, EmailAddress, msDS-UserPasswordExpiryTimeComputed, AccountExpirationDate, Company, StreetAddress, L, PostalCode, co | select DisplayName, SAMAccountName, EmailAddress, @{ Name = "ExpiryDate"; Expression = { [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") } }, AccountExpirationDate, Company, StreetAddress, L, PostalCode, co | Sort-Object -Property Company | Format-Table -Autosize -Property Company, DisplayName, SAMAccountName, EmailAddress, AccountExpirationDate, ExpiryDate, StreetAddress, L, Postalcode, co | out-file -filepath c:\xy.csv

Format-* cmdlet 通常应该放在管道的最后。

如果您删除代码段中的 Format-Table 位,您应该会得到预期的结果。

此外,-NoTypeInformation 是您使用 Export-CSV 时最好的朋友 :-) 感谢 Matt