Назад | Перейти на главную страницу

Перенос объектов из таблицы форматирования в экспортный CSV дал неожиданные результаты

Я запускаю эту команду, чтобы получить список всех пользователей Activesync и экспортировать их в C: \ activesync.csv.

Get-ActiveSyncDevice | Get-ActiveSyncDeviceStatistics | sort-object status, devicetype , lastsyncattempttime | ft  FirstSyncTime   ,LastPolicyUpdateTime   ,LastSyncAttemptTime    ,LastSuccessSync , DeviceType , DeviceID, DeviceAccessState, Identity -a | Export-Csv c:\activesync.csv

Проблема в том, что данные CSV не соответствуют отображению консоли, если я опущу конечный | c:\activesync.csv ... где отображаемые данные и столбцы не совпадают.

Это ошибка в PowerShell?

Следует помнить, что все в PowerShell - это объект. Когда вы используете Format-Table, на выходе получается объект форматирования, и это то, что передается для экспорта CSV. Если передать результаты команды Format-Table в Get-Member, вы поймете, что я имею в виду.

Get-ActiveSyncDevice | 
  Get-ActiveSyncDeviceStatistics | 
  sort-object status, devicetype , lastsyncattempttime | 
  Format-Table FirstSyncTime   ,LastPolicyUpdateTime   ,LastSyncAttemptTime    ,LastSuccessSync , DeviceType , DeviceID, DeviceAccessState, Identity -a | 
  Get-Member

Результатом этого будет серия описаний различных объектов форматирования.

Format-Table отлично подходит для создания вывода в сеансе консоли или отправки форматированного вывода в текстовый файл (с использованием out-file), но если мы изменим вашу Format-Table на Select-Object, ваш CSV-файл будет больше того, что вы ожидаете .

Get-ActiveSyncDevice | 
  Get-ActiveSyncDeviceStatistics | 
  sort-object status, devicetype , lastsyncattempttime | 
  select  FirstSyncTime   ,LastPolicyUpdateTime   ,LastSyncAttemptTime    ,LastSuccessSync , DeviceType , DeviceID, DeviceAccessState, Identity | 
  Export-Csv c:\activesync.csv

(Примечание. Для длинных конвейеров символ вертикальной черты может использоваться как продолжение строки.)