Проблема здесь заключается в использовании вами FT
, который является псевдонимом для Format-Table
. Эти командлеты Format-
предназначены только для вывода на консоль / экран . Есть много вещей, которые вы можете сделать, чтобы настроить этот вывод, но в каждом случае PowerShell необходимо массировать данные, чтобы это было возможно. Это включает разбиение на переданные объекты на группы разных объектов ...
Microsoft.PowerShell.Commands.Internal.Format.FormatEndData
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
Вышеупомянутые типы данных были извлечены из запуска этого кода.
Get-ChildItem c:\temp | Format-Table | Get-Member
Таким образом, у вас больше нет объектов System.IO.FileInfo
и System.IO.DirectoryInfo
, которые вы обычно получали из Get-ChildItem
. Другая большая проблема связана с природой Format-cmdlets усеченные данные, такие как массивы с большим количеством элементов или длинными строками, чтобы сделать так, чтобы они соответствовали размеру экрана. В случае массивов это происходит из-за переменной предпочтения $FormatEnumerationLimit
, которая обычно по умолчанию равна 4.
Ten Numbers
-----------
{1, 2, 3, 4...}
Эти и другие ограничения могут быть смягчены с переключателями команд, такими как -AutoSize
и -HideTableHeaders
, out-string -width
и т. д. Это не имеет значения, потому что ...
Хорошая новость - это решение очень просто. Прекратите использовать их для чего-либо, кроме консольного вывода. Используя мой предыдущий пример:
$result = Get-ChildItem C:\temp
Get-ChildItem C:\temp | Export-CSV $path -NoTypeInformation
. Другие командлеты Export-
могут быть предпочтительны здесь, например Export-CLIXml
для сложных объектов, если вы хотите их хранить для использования в другом месте. Если вы просто ищете что-то красивое для включения в свой вывод, тогда рассмотрите ConvertTo-HTML
. Select-Object
. $result | Select prop1, prop2
. Вы также можете расширить свой выбор свойств, чтобы просто получить строки или строковый массив с помощью -ExpandProperty
: $result | Select -ExpandProperty prop1
$result | Select prop1, @{Name="prop2";Expression={$_.prop2 * 3}
Потенциально допустимое использование
Некоторые предпочитают вывод для использования в электронных письмах и для записи статистики. Хотя он является неотъемлемой частью хранения данных в более удобном для использования формате для последующего использования. Однако, если вам действительно нужны эти данные, имейте в виду, что вы не работаете с объектом, который изначально был у вас.
Итак, если вам нужны ваши данные в формате таблицы, но они сохранены в виде строки, рассмотрите Out-String
$body = Get-ChildItem c:\temp | Format-Table | Out-String
, но помните, что Format-Table
будет воспроизводить с выходом объекта в порядке чтобы он отображался на экране (усеченные свойства массива и длинные строки). На самом деле .. если вы хотите, чтобы это было красиво и отформатировано, вы должны просто использовать ConvertTo-HTML
.
Точка, вам почти никогда не нужно сохранять данные из Format-Table. Существует почти всегда лучший способ.
Измените текстовое поле отчета к:
= Fields!Addr1.Value + VbCrLf +
Fields!Addr2.Value + VbCrLf +
Fields!Addr3.Value
Я полагаю, что необходимо установить свойство CanGrow на верный на Текстовом поле. См. http://msdn.microsoft.com/en-us/library/ms159116 (SQL.90) .aspx для некоторых деталей.
У меня возникла дополнительная проблема после добавления chr(10)
в базу данных.
В поле (внутри отчета) добавьте:
=REPLACE(Fields!Addr1.Value, CHR(10), vbCrLf)