Я создал новый пользовательский вывод таблицы для одной из моих функций и надеялся, что кто-то с большим опытом сможет помочь с обнаруженной проблемой.
У меня установлена ширина столбца для определенных элементов в таблицев надежде, что они обернутся вокруг в этот момент, но, похоже, они этого не сделают, пока ширина окна консоли не заполнится.Затем он делает это для последнего столбца, который будет уходить только с экрана.Все остальные столбцы в выходных данных опущены.
Вот мой отрывок из ps1xml:
<View>
<Name>L3Rule</Name>
<ViewSelectedBy>
<TypeName>Show.L3Rule</TypeName>
</ViewSelectedBy>
<GroupBy>
<ScriptBlock>
$_.Name
</ScriptBlock>
<CustomControlName>RuleGrouping</CustomControlName>
</GroupBy>
<TableControl>
<AutoSize />
<TableHeaders>
<TableColumnHeader>
<Label>ID</Label>
</TableColumnHeader>
<TableColumnHeader>
<Label>Action</Label>
</TableColumnHeader>
<TableColumnHeader>
<Width>30</Width>
<Label>Source</Label>
</TableColumnHeader>
<TableColumnHeader>
<Width>30</Width>
<Label>Destination</Label>
</TableColumnHeader>
<TableColumnHeader>
<Width>30</Width>
<Label>Service</Label>
</TableColumnHeader>
<TableColumnHeader>
<Label>Logged</Label>
</TableColumnHeader>
<TableColumnHeader>
<Label>Tag</Label>
</TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<Wrap/>
<TableColumnItems>
<TableColumnItem>
<PropertyName>ID</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Action</PropertyName>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>
if ($_.Source -is [System.String]) { $_.Source }
else { $_.Source.Name -join "; " }
</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>
if ($_.Destination -is [System.String]) { $_.Destination }
else { $_.Destination.Name -join "; " }
</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>
if ($_.Service -is [System.String]) { $_.Service }
else { $_.Service.Name -join "; " }
</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Logged</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Tag</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
Вот пример выходных данных:
Rule: Inbound to blah
ID Action Source Destination Service Logged Tag
-- ------ ------ ----------- ------- ------ ---
1111 allow Somewhere ANY Service; Service true N/A
Rule: Outbound to blah
ID Action Source Destination Service
-- ------ ------ ----------- -------
2222 allow Item1 Object1; AnotherObject1; MoreObjects Service; Service (TCP); Service (TCP); Another
Service (TCP); This Service
Как вы можете видетьон пропускает последние два столбца, и некоторые из столбцов больше, чем указанные 30 символов.Мне бы хотелось, чтобы они были обернуты так, как я ожидал, но я подозреваю, что проблема заключается в том, что они разрешают обтекание только на уровне ввода строки.
В идеале я мог бы использовать Out-String для элементовбудучи выходом.Я пытался это показать элементы, как это, но я думаю, что он принудительно устанавливает ширину столбцов по умолчанию.(Я видел нечто подобное в файле DotNetTypes.format.ps1xml - строка 3420)
Rule: Inbound to blah
ID Action Source Destination Service Logged Tag
-- ------ ------ ----------- ------- ------ ---
1111 allow Somewhere ANY Service true N/A
Service
Rule: Outbound to blah
ID Action Source Destination Service Logged Tag
-- ------ ------ ----------- ------- ------ ---
2222 allow Item1 Object1 Service true N/A
AnotherObject1 Service (TCP)
MoreObjects Service (TCP)
Another Service (TCP)
This Service
Надеюсь, я предоставил достаточно информации, но, пожалуйста, дайте мне знать, если вам нужно знать больше.Пожалуйста, скажите мне, что я делаю что-то глупое.
Спасибо