Format-Table (Microsoft.PowerShell.Utility)
Format-Table
- Модуль:
- Microsoft.PowerShell.Utility
Форматирует вывод в виде таблицы.
Синтаксис
Format-Table
[[-Property] <Object[]>]
[-AutoSize]
[-RepeatHeader]
[-HideTableHeaders]
[-Wrap]
[-GroupBy <Object>]
[-View <string>]
[-ShowError]
[-DisplayError]
[-Force]
[-Expand <string>]
[-InputObject <psobject>]
[<CommonParameters>]Описание
Командлет Format-Table форматирует выходные данные команды в виде таблицы с выбранными свойствами объекта в каждом столбце. Тип объекта определяет макет по умолчанию и свойства, отображаемые в каждом столбце. Вы можете использовать параметр Property, чтобы выбрать свойства, которые вы хотите отобразить.
PowerShell использует средства форматирования по умолчанию, чтобы определить, как отображаются типы объектов. Вы можете использовать файлы .ps1xml для создания пользовательских представлений, отображающих выходную таблицу с указанными свойствами. После создания пользовательского представления используйте параметр View, чтобы отобразить таблицу в вашем пользовательском представлении. Дополнительные сведения о представлениях см. в разделе about_Format.ps1xml.
Хэш-таблицу можно использовать для добавления вычисляемых свойств к объекту перед его отображением и для указания заголовков столбцов в таблице. Чтобы добавить вычисляемое свойство, используйте параметр Property или GroupBy. Дополнительные сведения о хэш-таблицах см. в разделе about_Hash_Tables.
Примеры
Пример 1. Форматирование хоста PowerShell
В этом примере информация о ведущей программе для PowerShell отображается в таблице.
Get-Host | Format-Table -AutoSizeКомандлет Get-Host получает объекты System.Management.Automation.Internal.Host.InternalHost, представляющие хост. Объекты отправляются по конвейеру в Format-Table и отображаются в таблице. Параметр AutoSize регулирует ширину столбцов, чтобы минимизировать усечение.
Пример 2. Форматирование процессов по BasePriority
В этом примере процессы отображаются в группах, имеющих одинаковое свойство BasePriority.
Get-Process | Sort-Object -Property BasePriority | Format-Table -GroupBy BasePriority -WrapКомандлет Get-Process получает объекты, представляющие каждый процесс на компьютере, и отправляет их по конвейеру в Sort-Object. Объекты сортируются в порядке их свойства BasePriority.
Отсортированные объекты передаются по конвейеру в Format-Table. Параметр GroupBy упорядочивает данные процесса по группам на основе значения их свойства BasePriority. Параметр Wrap гарантирует, что данные не будут усечены.
Пример 3. Форматирование процессов по дате начала
В этом примере отображается информация о процессах, запущенных на компьютере. Объекты сортируются, и Format-Table использует представление для группировки объектов по дате их начала.
Get-Process | Sort-Object StartTime | Format-Table -View StartTimeGet-Process получает объекты System.Diagnostics.Process, которые представляют процессы, запущенные на компьютере. Объекты передаются по конвейеру в Sort-Object и сортируются на основе свойства StartTime.
Отсортированные объекты передаются по конвейеру в Format-Table. Параметр View указывает представление StartTime, определенное в файле DotNetTypes.format.ps1xml PowerShell для System.Diagnostics.Process предметы. Представление StartTime преобразует время начала каждого процесса в короткую дату, а затем группирует процессы по дате начала.
Файл DotNetTypes.format.ps1xml содержит представление Приоритет для процессов. Вы можете создавать свои собственные файлы format.ps1xml с настраиваемыми представлениями.
Пример 4. Использование пользовательского представления для вывода таблицы
В этом примере пользовательское представление отображает содержимое каталога. Пользовательское представление добавляет столбец CreationTime в выходные данные таблицы для объектов System.IO.DirectoryInfo и System.IO.FileInfo, созданных с помощью Get-ChildItem.
Пользовательское представление в этом примере было создано на основе представления, определенного в исходном коде PowerShell. Дополнительные сведения о представлениях и коде, использованном для создания представления этого примера, см. в разделе about_Format.ps1xml.
Get-ChildItem -Path C:\Test | Format-Table -View mygciview
Directory: C:\Test
Mode LastWriteTime CreationTime Length Name
---- ------------- ------------ ------ ----
d----- 11/4/2019 15:54 9/24/2019 15:54 Archives
d----- 8/27/2019 14:22 8/27/2019 14:22 Drawings
d----- 10/23/2019 09:38 2/25/2019 09:38 Files
-a---- 11/7/2019 11:07 11/7/2019 11:07 11345 Alias.txt
-a---- 2/27/2019 15:15 2/27/2019 15:15 258 alias_out.txt
-a---- 2/27/2019 15:16 2/27/2019 15:16 258 alias_out2.txtGet-ChildItem получает содержимое текущего каталога C:\Test. Объекты System.IO.DirectoryInfo и System.IO.FileInfo передаются по конвейеру. Format-Table использует параметр View для указания пользовательского представления mygciview, которое включает столбец CreationTime.
Вывод Format-Table по умолчанию для Get-ChildItem не включает столбец CreationTime.
Пример 5. Использование свойств для вывода таблицы
В этом примере используется параметр Property для отображения всех служб компьютера в таблице из двух столбцов, в которой показаны свойства Name и DependentServices.
Get-Service | Format-Table -Property Name, DependentServicesGet-Service получает все службы на компьютере и отправляет объекты System.ServiceProcess.ServiceController по конвейеру. Format-Table использует параметр Property, чтобы указать, что свойства Name и DependentServices отображаются в таблице.
Name и DependentServices — это два свойства типа объекта. Чтобы просмотреть все свойства: Get-Service | Свойства Get-Member -MemberType.
Пример 6. Форматирование процесса и расчет времени его выполнения
В этом примере отображается таблица с именем процесса и общим временем выполнения процессов Блокнот на локальном компьютере. Общее время работы рассчитывается путем вычитания времени запуска каждого процесса из текущего времени.
Get-Process notepad |
Format-Table ProcessName, @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}
ProcessName TotalRunningTime
----------- ----------------
notepad 03:20:00.2751767
notepad 00:00:16.7710520Get-Process получает все процессы блокнота локального компьютера и отправляет объекты по конвейеру. Format-Table отображает таблицу с двумя столбцами: ProcessName, свойство Get-Process, и TotalRunningTime, свойство расчетное свойство.
Свойство TotalRunningTime определяется хеш-таблицей с двумя ключами: Label и Expression. Ключ Label определяет имя свойства. Ключ Выражение определяет вычисление. Выражение получает свойство StartTime каждого объекта процесса и вычитает его из результата команды Get-Date, которая получает текущую дату и время.
Пример 7: Процессы форматирования Блокнота
В этом примере используется Get-CimInstance, чтобы получить время выполнения всех процессов блокнота на локальном компьютере. Вы можете использовать Get-CimInstance с параметром ComputerName для получения информации с удаленных компьютеров.
$Processes = Get-CimInstance -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{
Label = "Total Running Time"
Expression={(Get-Date) - $_.CreationDate}
}
ProcessName Total Running Time
----------- ------------------
notepad.exe 03:39:39.6260693
notepad.exe 00:19:56.1376922Get-CimInstance получает экземпляры класса WMI Win32_Process, который описывает все процессы локального компьютера с именем notepad.exe. Объекты процесса хранятся в переменной $Processes.
Объекты процесса в переменной $Processes передаются по конвейеру в Format-Table, который отображает свойство ProcessName и новое вычисляемое свойство. Общее время работы.
Команда присваивает имя нового вычисляемого свойства Общее время работы клавише Label. Блок сценария ключа Expression вычисляет продолжительность выполнения процесса путем вычитания даты создания процесса из текущей даты. Командлет Get-Date получает текущую дату. Дата создания вычитается из текущей даты. Результатом является значение Общее время работы.
Пример 8. Устранение ошибок формата
В следующих примерах показаны результаты добавления параметров DisplayError или ShowError к выражению.
Get-Date | Format-Table DayOfWeek,{ $_ / $null } -DisplayError
DayOfWeek $_ / $null
--------- ------------
Wednesday #ERR
Get-Date | Format-Table DayOfWeek,{ $_ / $null } -ShowError
DayOfWeek $_ / $null
--------- ------------
Wednesday
InvalidArgument: Failed to evaluate expression " $_ / $null ".Параметры
-AutoSize
Указывает, что командлет настраивает размер и количество столбцов в зависимости от ширины данных. По умолчанию размер и количество столбцов определяются представлением.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-DisplayError
Указывает, что командлет отображает ошибки в командной строке. Этот параметр можно использовать в качестве средства отладки, когда вы форматируете выражения в команде Format-Table и вам необходимо устранить неполадки с выражениями.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Expand
Указывает формат объекта коллекции и объектов в коллекции. Этот параметр предназначен для форматирования объектов, поддерживающих интерфейс ICollection (System.Collections). Значение по умолчанию — EnumOnly. Допустимые значения этого параметра следующие:
- EnumOnly: отображает свойства объектов в коллекции.
- CoreOnly: отображает свойства объекта коллекции.
- Оба: отображает свойства объекта коллекции и свойства объектов в коллекции.
- Тип :
String
- Принятые значения:
CoreOnly, EnumOnly, оба
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Force
Указывает, что командлет предписывает командлету отобразить всю информацию об ошибках. Используйте с параметром DisplayError или ShowError. По умолчанию, когда объект ошибки записывается в потоки ошибок или отображения, отображается только некоторая информация об ошибке.
Также требуется при форматировании определенных типов .NET. Дополнительную информацию смотрите в разделе «Примечания».
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-GroupBy
Указывает отсортированный вывод в отдельных таблицах на основе значения свойства. Например, вы можете использовать GroupBy для перечисления сервисов в отдельных таблицах в зависимости от их статуса.
Введите выражение или свойство. Параметр GroupBy предполагает, что объекты отсортированы. Используйте командлет Sort-Object перед использованием Format-Table для группировки объектов.
Значение параметра GroupBy может быть новым вычисляемым свойством. Вычисляемое свойство может быть блоком скрипта или хеш-таблицей. Допустимые пары ключ-значение:
- Имя (или метка) —
<string> - Выражение —
<string>или<script; block> - ФорматСтрока —
<string>
Дополнительные сведения см. в разделе about_Calculated_Properties.
- Тип :
Объект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-HideTableHeaders
Исключает заголовки столбцов из таблицы.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-InputObject
Указывает объекты для форматирования. Введите переменную, содержащую объекты, или введите команду или выражение, позволяющее получить объекты.
- Тип :
PSОбъект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-Property
Указывает свойства объекта, отображаемые на экране, и порядок их появления. Введите одно или несколько имен свойств, разделенных запятыми, или используйте хэш-таблицу для отображения вычисляемого свойства. Подстановочные знаки разрешены.
Если вы опустите этот параметр, свойства, отображаемые на экране, будут зависеть от свойств первого объекта. Например, если первый объект имеет СвойствоA и СвойствоB, а последующие объекты имеют СвойствоA, СвойствоB и . >PropertyC, то отображаются только заголовки PropertyA и PropertyB.
Параметр Property является необязательным. Вы не можете использовать параметры Property и View в одной команде.
Значение параметра Property может быть новым вычисляемым свойством. Вычисляемое свойство может быть блоком скрипта или хеш-таблицей. Допустимые пары ключ-значение:
- Имя (или метка)
<string> - Выражение —
<string>или<script; block> - ФорматСтрока —
<string> - Ширина -
<int32>- должна быть больше0. - Выравнивание - значение может быть
Слева,По центруилиСправа.
Дополнительные сведения см. в разделе about_Calculated_Properties.
- Тип :
Object[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
True
-RepeatHeader
Повторяет отображение заголовка таблицы после каждого заполнения экрана. Повторяющийся заголовок полезен, когда выходные данные передаются на пейджер, такой как less или more, или при прокрутке с помощью программы чтения с экрана.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-ShowError
Этот параметр отправляет ошибки через конвейер. Этот параметр можно использовать в качестве средства отладки, когда вы форматируете выражения в команде Format-Table и вам необходимо устранить неполадки с выражениями.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-View
Начиная с PowerShell 6, представления по умолчанию определяются в исходном коде PowerShell C#. Файлы *.format.ps1xml из PowerShell 5.1 и более ранних версий не существуют в PowerShell 6 и более поздних версиях.
Параметр View позволяет указать альтернативный формат или собственное представление таблицы. Вы можете использовать представления PowerShell по умолчанию или создавать собственные представления. Дополнительные сведения о том, как создать собственное представление, см. в разделе about_Format.ps1xml.
Альтернативные и пользовательские представления для параметра View должны использовать формат таблицы, в противном случае Format-Table завершится с ошибкой. Если альтернативное представление представляет собой список, используйте командлет Format-List. Если альтернативное представление не является списком или таблицей, используйте командлет Format-Custom.
Вы не можете использовать параметры Property и View в одной команде.
- Тип :
String
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Wrap
Отображает текст, превышающий ширину столбца, в следующей строке. По умолчанию текст, превышающий ширину столбца, обрезается.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
PSObject
В этот командлет можно передать любой объект.
Выходы
Microsoft.PowerShell.Commands.Internal.Format
Этот командлет возвращает объекты формата, представляющие таблицу.
Примечания
PowerShell включает следующие псевдонимы для Format-Table:
Все платформы:
ft
В PowerShell 7.2 представлены новые функции для раскрашивания вывода. Цветами можно управлять с помощью автоматической переменной $PSStyle. Свойство $PSStyle.Formatting.TableHeader определяет цвет, используемый для заголовка таблицы, отображаемой с помощью Format-Table. Дополнительные сведения об этом параметре см. в разделе about_ANSI_Terminals.
Если вы хотите использовать Format-Table с параметром Property, вам необходимо включить параметр Force при любом из следующих условий:
Входные объекты обычно форматируются вне канала с использованием метода
ToString(). Это относится к примитивным типам[string]и .NET, которые являются расширенным набором встроенных числовых типов, таких как[int],[long]и другие.Входные объекты не имеют общедоступных свойств.
Входные объекты — это экземпляры типов-оболочек, которые PowerShell использует для выходных потоков, отличных от выходного потока Success. Это применимо только тогда, когда эти типы оболочек отправляются в поток вывода Success, который требует либо предварительного захвата их с помощью общих параметров, таких как ErrorVariable, либо использования перенаправления, такого как
*>&1.Типы оберток включают в себя:
- System.Management.Automation.ErrorRecord
- System.Management.Automation.WarningRecord
- System.Management.Automation.VerboseRecord
- System.Management.Automation.DebugRecord
- System.Management.Automation.InformationRecord