Как поменять заголовок столбца в выводе PowerShell. Как поменять ширину и выравнивание в таблицах
Командлет Format-Table предназначен для вывода данных в виде таблицы. У данного командлета есть несколько опций, с помощью которых можно управлять внешним видом таблицы и некоторыми другими её свойствами.
С помощью опции -Property можно менять набор выводимых данных (какие столбцы будут показаны), так и определять заголовки столбцов и использовать вычисления в выводимых данных.
Подробности смотрите в статьях:
- Тонкая настройка вывода с Format-Table
- Как в PowerShell менять набор выводимых по умолчанию данных
- В PowerShell таблица не помещается на экран — как исправить (РЕШЕНО)
Рассмотрим подробнее справку по опции -Property, а затем перейдём к примерам.
Параметр -Property командлета Format-Table
Параметр -Propert задаёт выводимые свойства объекта и порядок их появления. Введите одно или несколько имён свойств, разделённых запятыми, или используйте хеш-таблицу для отображения вычисляемого свойства. Подстановочные знаки разрешены.
Если вы опустите этот параметр, отображаемые свойства будут зависеть от свойств первого объекта. Например, если у первого объекта есть PropertyA и PropertyB, а у последующих объектов есть PropertyA, PropertyB и PropertyC, то будут отображаться только заголовки PropertyA и PropertyB.
Параметр -Property является необязательным. Вы не можете использовать параметры -Property и -View в одной и той же команде.
Значение параметра -Property может быть новым вычисляемым свойством. Чтобы создать вычисляемое свойство, используйте хеш-таблицу. Допустимые следующие ключи:
- Name (или Label) = `<строка>`
- Expression = `<строка>` или `<скриптовый блок>`
- FormatString = `<строка>`
- Width = `<int32>`
- Alignment = значением может быть Left, Center или Right
Примеры использования параметра -Property командлета Format-Table
Как поменять заголовок столбца в выводе PowerShell
Рассмотрим использование параметра -Property командлета Format-Table для изменения заголовка столбца.
К примеру, командлет Get-ChildItem без указания опций выведет папки и файлы в текущей рабочей директории:
Get-ChildItem
Можно увидеть, что показано четыре столбца:
- Mode
- LastWriteTime
- Length
- Name
Команда, аналогичная предыдущей, но с явным указанием выводимых данных:
Get-ChildItem | Format-Table -Property Mode, LastWriteTime, Length, Name
Необязательно указывать опцию -Property, следующая и предыдущая команды идентична:
Get-ChildItem | Format-Table Mode, LastWriteTime, Length, Name
В последствии в командах не будет указываться -Property.
В шапке таблицы используются английские обозначения, соответствующие названию свойств.
Следующая команда заменить заголовок последнего столбца, вместо Name там будет «Имя»:
Get-ChildItem | Format-Table Mode, LastWriteTime, Length, @{Label="Имя"; Expression={$_.Name}}
В этой команде вместо Name (выводимый параметр) использовано выражение @{Label="Имя"; Expression={$_.Name}}. В этом выражении значение Label (в данном случае "Имя") является заголовком выводимого столбца. А значение Expression (в данном случае $_.Name) это выводимые данные. Обратите внимание, что в качестве выводимых данных используется конструкция $_.Name, которая получилась объединением последовательности символов «$_.» и имени свойства, в данном случае «Name».
В следующей команде все имена столбцов заменены заголовками на русском языке:
Get-ChildItem | Format-Table @{Label="Режим"; Expression={$_.Mode}}, @{Label="Последняя запись в"; Expression={$_.LastWriteTime}}, @{Label="Размер"; Expression={$_.Length}}, @{Label="Имя"; Expression={$_.Name}}
При желании вы можете поменять столбцы местами или вовсе исключить ненужные данные:
Get-ChildItem | Format-Table @{Label="Режим"; Expression={$_.Mode}}, @{Label="Имя"; Expression={$_.Name}}, @{Label="Последняя запись в"; Expression={$_.LastWriteTime}}
Также вы можете выбрать другие данные для вывода и поменять заголовки для них:
Get-ChildItem | Get-Member -MemberType Property Get-ChildItem | Format-Table @{Label="Режим"; Expression={$_.Mode}}, @{Label="Последняя запись в"; Expression={$_.LastWriteTime}}, @{Label="Размер"; Expression={$_.Length}}, @{Label="Полное имя"; Expression={$_.FullName}}
Подробности смотрите в статье: Как в PowerShell менять набор выводимых по умолчанию данных
Как поменять ширину и выравнивание в таблицах
Кроме уже рассмотренных ключей опции -Property:
- Name (или Label) = `<строка>`
- Expression = `<строка>` или `<скриптовый блок>`
для изменения внешнего вида таблицы также можно использовать следующие:
- Width = ЧИСЛО
- Alignment = значением может быть "Left", "Center" или "Right"
Как можно понять из названия ключей, Width устанавливает ширину столбцов, а Alignment отвечает за выравнивание выводимых данных в столбце.
В следующем выражении показано использование Width:
Get-ChildItem | Format-Table @{Label="Режим"; Expression={$_.Mode}; Width=8}, @{Label="Последняя запись в"; Expression={$_.LastWriteTime}; Width=20}, @{Label="Размер"; Expression={$_.Length}; Width=7}, @{Label="Имя"; Expression={$_.Name}; Width=25}
Обратите внимание на структуру:
@{Label="Режим"; Expression={$_.Mode}; Width=8}
В следующей команде показано одновременное использование Width и Alignment (а также уже рассмотренных выше Label и Expression):
Get-ChildItem | Format-Table @{Label="Режим"; Expression={$_.Mode}; Width=8}, @{Label="Последняя запись в"; Expression={$_.LastWriteTime}; Width=20}, @{Label="Размер"; Expression={$_.Length}; Width=7; Alignment="Center"}, @{Label="Имя"; Expression={$_.Name}; Width=25; Alignment="Right"}
Ещё один вариант форматирвоания:
Get-ChildItem | Format-Table @{Label="Режим"; Expression={$_.Mode}; Width=8}, @{Label="Последняя запись в"; Expression={$_.LastWriteTime}; Width=20}, @{Label="Размер"; Expression={$_.Length}; Width=7; Alignment="Left"}, @{Label="Имя"; Expression={$_.Name}}
Связанные статьи:
- Как в PowerShell менять набор выводимых по умолчанию данных (100%)
- В PowerShell таблица не помещается на экран — как исправить (РЕШЕНО) (100%)
- Тонкая настройка вывода с Format-Table (100%)
- Фильтрация свойств объектов в PowerShell (100%)
- Как выводить данные без таблицы в PowerShell (81.8%)
- Командлеты Set-Content и Add-Content для обработки строк (RANDOM - 50%)