Я только что обновил PowerShell с версии 3.0 до версии 5.1 и заметил, что выходы консоли Select-Object и Format-Table ведут себя по-разному. Если значение свойства слишком длинное, все последующие свойства полностью исключаются из вывода консоли (я вижу, что все значения по-прежнему передаются - просто подавляются в выводе консоли). Мне нужен простой способ воспроизвести старое поведение 2.0 / 3.0 (4.0?), Где значения усекаются для соответствия всем свойствам консоли, так как намного проще сравнивать данные с первого взгляда, но я не могу понять способ сделать это.
Вот пример: я делаю массив хеш-таблиц, затем пытаюсь просмотреть вывод в консоли шириной 120 символов:
$array = @()
$array += New-Object PSObject -Property @{Name="Test1";Value1="samplestring";Value2="Omitted Text"}
$array += New-Object PSObject -Property @{Name="Test2";Value1="Much longer string. More than 120 characters, so that we can suppress Value2's console output. This sentence ought to do it.";Value2="Omitted Text"}
$array | select Name,Value1,Value2
В PS 2.0 и 3.0 вывод - именно то, что я хочу:
Name Value1 Value2
---- ------ ------
Test1 samplestring Omitted Text
Test2 Much longer string. More than 120 ch... Omitted Text
... но в 5.1, кажется, автоматически применяется Format-Table -AutoSize и дает мне это:
Name Value1
---- ------
Test1 samplestring
Test2 Much longer string. More than 120 characters, so that we can suppress Value2's console output. This sentence o...
Я пытался поиграться с вычисленными свойствами Format-Table, но я не могу заставить работать свойство width, и, честно говоря, указание ширины каждого свойства - это слишком много работы для команд, которые я печатаю и выполняю на лету. Есть ли какая-то другая команда, которую я пропускаю, или я застрял, сожалея о своем обновлении?