у меня есть Командлет в моем модуле, который возвращает коллекцию общего DataRows из таблицы базы данных, имя которого задаются с -Name
параметромDataRow с динамическими свойствами
# this returns a collection of datarows from table "Orders"
Get-Table -Name Orders
Каждый раз, когда я называю Командлет на разных таблицах I выведите выходной сигнал на Format-Table
, что делает его более читаемым.
Есть ли способ сохранить свойства, отформатированные в виде таблицы, без необходимости обрабатывать каждый раз до Format-Table
? Что-то, что говорит PowerShell, всегда использовать макет таблицы для отображения типа DataRow?
У меня уже есть ps1xml
файла вместе с модулем, содержащий некоторое правило формата, как это:
<View>
<Name>MyType</Name>
<ViewSelectedBy>
<TypeName>MyNamespace.MyType</TypeName>
</ViewSelectedBy>
<TableControl>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>Property1</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Property2</PropertyName>
</TableColumnItem>
[...]
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
Я думал использовать аналогичное правило для System.Data.DataRow
типа, но свойства имеют разные названия каждый раз, и это похоже, я не могу удалить тег <TableRowEntries>
из приведенного выше шаблона XML.
Любая идея?
Я бы либо изменить командлет с '-FormatTable' переключателем, или если вы не можете изменить источник, напишите обертку для него 'Get-FormattedTable' или что-то еще. – TToni
@TToni Я могу редактировать командлет, но как заставить его записывать строки в виде таблицы? Я возвращаю строки с помощью 'WriteObject (MyDataTable.Rows, true);' –
Я принял командлет сценария, где это было бы легко. Я не знаю, как это сделать с помощью командлета C# или если это возможно. Так что в вашем случае я бы пошел с оболочкой сценария PowerShell (т. Е. Новой функцией скрипта, которая просто перенаправляет параметры в исходный командлет и выводится через «Формат-таблица») – TToni