2016-01-08 2 views
1

Я совершенно новый для PowerShell, а не самый лучший в работе с кодом и скриптами, но пытаюсь учиться. И теперь к проблеме!PowerShell export csv/Strange output

Я написал короткий сценарий, в котором перечислены все пользователи определенного подразделения с определенными свойствами.

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 

Я получаю некоторые странные caracters в файл

27c87ef9bbda4f709f6b4002fa4af63c,,,,, 

Но это происходит только после того, как определенное количество свойств/столбцов было выбрано для таблицы. Я выбираю только 4 свойства, которые отлично работают. Что мне не хватает?

Любая помощь была бы любезно оценена!

+1

Я думаю, что вам не нужен 'Format-Table' здесь, так как вы экспорт в CSV. Это лучше работает, если вы удалите этот бит? 'Format-Table -Autosize -Property Company, DisplayName, SAMAccountName, EmailAddress, AccountExpirationDate, ExpiryDate, StreetAddress, L, Postalcode, co | ' – sodawillow

+1

В дополнение к комментарию @ sodawillow (который является правильным/является причиной вашего странного вывода), вы можете добавить переключатель' -notype' (или '-NoTypeInformation') в ваш вызов' Export-CSV'; что гарантирует, что первая строка будет заголовком, а не строкой '#TYPE ... '. См. Http://ss64.com/ps/export-csv.html. – JohnLBevan

+1

Возможный дубликат [В Powershell, какой способ выбрать данные из FormatTable для управления им как строку?] (Http://stackoverflow.com/questions/29130603/in-powershell-what-is-the- надлежащий путь к выбору-данных-from-a-formattable-to-manip) – Matt

ответ

0

Format-* командлеты обычно должны быть последними в трубопроводе.

Если вы удалите бит Format-Table в своем фрагменте, вы должны получить ожидаемый результат.

Кроме того, -NoTypeInformation Ваш лучший друг при использовании Export-CSV :-) кредитов Matt

-2

Не могли бы вы попробовать команду 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 
+0

Оператор спрашивает о csv's. Это не будет сделано. – Matt

+0

Как это ответ? Оператор хочет экспортировать вывод в файл расширения .csv. Out-file не понимает, что команда out-file – MrPowerUser

+0

поддерживает csv. но, как вы пожелаете. –