Format-Table

Форматирует выходные данные в виде таблицы.

Синтаксис

Format-Table
      [[-Property] <Object[]>]
      [-AutoSize]
      [-RepeatHeader]
      [-HideTableHeaders]
      [-Wrap]
      [-GroupBy <Object>]
      [-View <string>]
      [-ShowError]
      [-DisplayError]
      [-Force]
      [-Expand <string>]
      [-InputObject <psobject>]
      [<CommonParameters>]

Описание

Командлет Format-Table форматирует выходные данные команды в виде таблицы с выбранными свойствами объекта в каждом столбце. Тип объекта определяет макет по умолчанию и свойства, отображаемые в каждом столбце. Для выбора свойств, которые требуется отобразить, можно использовать параметр свойства .

PowerShell использует стандартные форматировщики, чтобы определить способ отображения типов объектов. Файлы можно использовать .ps1xml для создания пользовательских представлений, которые отображают выходную таблицу с указанными свойствами. После создания пользовательского представления используйте параметр View для отображения таблицы с пользовательским представлением. Дополнительные сведения о представлениях см. в разделе about_Format.ps1xml.

Вы можете использовать хэш-таблицу для добавления вычисляемых свойств в объект перед отображением и указания заголовков столбцов в таблице. Чтобы добавить вычисляемое свойство, используйте параметр Property или GroupBy . Дополнительные сведения о хэш-таблицах см. здесь.

Примеры

Пример 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 StartTime

Get-Processполучает объекты System.Diagnostics.Process, представляющие процессы, выполняемые на компьютере. Объекты отправляются вниз по конвейеру Sort-Objectи сортируются на основе свойства StartTime .

Отсортированные объекты отправляются по конвейеру Format-Table. Параметр View задает представление StartTime , определенное в файле PowerShell DotNetTypes.format.ps1xml для объектов 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.txt

Get-ChildItemвозвращает содержимое текущего каталога. C:\Test Объекты System.IO.DirectoryInfo и System.IO.FileInfo отправляются по конвейеру. Format-Tableиспользует параметр View для указания пользовательского представления mygciview, включающего столбец CreationTime.

Выходные данные по умолчанию Format-Table не включают столбец CreationTime.Get-ChildItem

Пример 5. Использование свойств для выходных данных таблицы

В этом примере используется параметр Property для отображения всех служб компьютера в таблице с двумя столбцами, в котором показаны свойства Name и DependentServices.

Get-Service | Format-Table -Property Name, DependentServices

Get-Service получает все службы на компьютере и отправляет объекты System.ServiceProcess.ServiceController вниз конвейера. Format-Tableиспользует параметр Property, чтобы указать, что свойства Name и DependentServices отображаются в таблице.

Name и DependentServices являются двумя свойствами типа объекта. Чтобы просмотреть все свойства: Get-Service | Get-Member -MemberType Properties

Пример 6. Форматирование процесса и вычисление времени выполнения

В этом примере отображается таблица с именем процесса и общим временем выполнения для процессов блокнота локального компьютера. Общее время выполнения рассчитывается для каждого процесса путем вычитания времени начала из текущего времени.

Get-Process notepad |
  Format-Table ProcessName, @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}

ProcessName TotalRunningTime
----------- ----------------
notepad     03:20:00.2751767
notepad     00:00:16.7710520

Get-Processполучает все процессы блокнота локального компьютера и отправляет объекты вниз по конвейеру. Format-Table отображает таблицу с двумя столбцами: ProcessName, Get-Process свойство и TotalRunningTime, вычисляемое свойство.

Свойство TotalRunningTime задается хэш-таблицей с двумя ключами, меткой и выражением. Ключ Label задает имя свойства. Ключ выражения задает вычисление. Выражение получает свойство StartTime каждого объекта процесса и вычитает его из результата Get-Date команды, которая получает текущую дату и время.

Пример 7. Форматирование процессов Блокнот

В этом примере используется Get-CimInstance для получения времени выполнения для всех процессов блокнота на локальном компьютере. С параметром ComputerName можно использовать Get-CimInstance для получения сведений с удаленных компьютеров.

$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.1376922

Get-CimInstance возвращает экземпляры класса WMI Win32_Process , описывающего все процессы локального компьютера с именем notepad.exe. Объекты процесса хранятся в переменной $Processes .

Объекты процесса в $Processes переменной отправляются вниз по конвейеру Format-Table, в который отображается свойство ProcessName и новое вычисляемое свойство Total Running Time.

Команда присваивает имя нового вычисляемого свойства, total Running Time, ключу Label . Блок скрипта ключа выражения вычисляет, сколько времени выполняется процесс, вычитая дату создания процессов из текущей даты. Командлет 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

Указывает, что командлет настраивает размер столбца и количество столбцов на основе ширины данных. По умолчанию размер и количество столбцов определяются представлением.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisplayError

Указывает, что командлет отображает ошибки в командной строке. Этот параметр можно использовать в качестве средства отладки при форматировании выражений в команде Format-Table и необходимости устранять неполадки с выражениями.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Expand

Задает формат объекта коллекции и объектов в коллекции. Этот параметр предназначен для форматирования объектов, поддерживающих интерфейс ICollection (System.Collections). Значение по умолчанию — EnumOnly. Допустимые значения для этого параметра приведены следующим образом:

  • Перечисление: отображает свойства объектов в коллекции.
  • CoreOnly: отображает свойства объекта коллекции.
  • Оба: отображает свойства объекта коллекции и свойства объектов в коллекции.
Type:String
Accepted values:CoreOnly, EnumOnly, Both
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Указывает, что командлет направляет командлет для отображения всех сведений об ошибке. Используется с параметром DisplayError или ShowError. По умолчанию при записи объекта ошибки в потоки ошибок или отображения отображаются только некоторые сведения об ошибке.

Также требуется при форматировании определенных типов .NET. Дополнительные сведения см. в разделе Примечания.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-GroupBy

Задает отсортированные выходные данные в отдельных таблицах на основе значения свойства. Например, можно использовать GroupBy для перечисления служб в отдельных таблицах на основе их состояния.

Введите выражение или свойство. Параметр GroupBy ожидает сортировки объектов. Sort-Object Используйте командлет перед использованием Format-Table для группировки объектов.

Значение параметра GroupBy может быть новым вычисляемым свойством. Вычисляемое свойство может быть блоком скрипта или хэш-таблицей. Допустимые пары "ключ-значение":

  • Имя (или метка) — <string>
  • Выражение — <string> или <script block>
  • Formatstring- <string>

Дополнительные сведения см. в about_Calculated_Properties.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HideTableHeaders

Исключает из таблицы заголовки столбцов.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Указывает объекты для форматирования. Введите переменную, которая содержит объекты, или команду или выражение, которое возвращает объекты.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Property

Задает свойства объекта, которые будут включены в вывод, и порядок их вывода. Введите одно или несколько имен свойств, разделенных запятыми, или используйте хэш-таблицу для отображения вычисляемого свойства. Разрешено использовать подстановочные знаки.

Если этот параметр опущен, свойства, отображаемые в отображении, зависят от свойств первого объекта. Например, если первый объект имеет PropertyA и PropertyB, но последующие объекты имеют PropertyA, PropertyB и PropertyC, отображаются только заголовки PropertyA и PropertyB.

Параметр Property является необязательным. Параметры свойства и представления нельзя использовать в той же команде.

Значение параметра Property может быть новым вычисляемым свойством. Вычисляемое свойство может быть блоком скрипта или хэш-таблицей. Допустимые пары "ключ-значение":

  • Имя (или метка) <string>
  • Выражение — <string> или <script block>
  • Formatstring- <string>
  • Ширина — <int32> должна быть больше, чем 0
  • Выравнивание — значение может быть Left, Centerили Right

Дополнительные сведения см. в about_Calculated_Properties.

Type:Object[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-RepeatHeader

Повторяет отображение заголовка таблицы после каждого экрана. Повторяющийся заголовок полезен, если выходные данные передаются на пейджер, например less или more страницы с помощью средства чтения с экрана.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowError

Этот параметр отправляет ошибки через конвейер. Этот параметр можно использовать в качестве средства отладки при форматировании выражений в команде Format-Table и необходимости устранять неполадки с выражениями.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 командлет.

Параметры свойства и представления нельзя использовать в той же команде.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wrap

Переносит текст, не помещающийся по ширине столбца, на следующую строку. По умолчанию текст, не уместившийся по ширине столбца, усекается.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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. Это применяется только в том случае, если эти типы оболочки отправляются в выходной поток успешного выполнения, требующий их записи с помощью общих параметров, таких как ErrorVariable first или использование перенаправления, *>&1например.