Основы системы форматирования Не забывайте, что почти все командлеты Windows PowerShell работают с операционной системой и другими элементами, содержащими огромное количество информации. Поэтому, будет непрактичным пытаться вывести на дисплей всю информацию – на компьютерном мониторе просто не хватит места для этого, а осуществлять горизонтальную прокрутку для поиска нужных данных не очень-то удобно. Поэтому, по умолчанию в оболочке отображается часть информации в форме, наиболее удобной для восприятия. Например, процесс может иметь несколько свойств, каждое из которых передает потенциально важную информацию.
Однако ни одного по-настоящему эффективного способа отобразить всю эту информацию в удобном формате нет, поэтому, командлет Get-Process, передавая выходные данные, не пытается этого сделать. Вместо этого оболочка показывает только семь свойств одного процесса, и делает это в довольно простой и удобной форме – в виде таблицы. Тем не менее, эти параметры не являются жестко запрограммированными, и при желании, приложив немного усилий, вы можете отменить их, или даже заменить новыми. Все стандартные настройки вы получаете в файлах XML-формата при установке Windows PowerShell.
Все форматирование по умолчанию основано на имени типа того элемента, который отображается. Имя типа можно увидеть, передав необходимый элемент по конвейеру в командлет Get-Member; после того как конвейер доставляет множество различных типов элементов, оболочка, как правило, выбирает по умолчанию формат выходных данных, основанный на имени типа первого элемента в конвейере.
Когда оболочке требуется использовать форматирование по умолчанию, она следует ряду правил, чтобы достичь этого.
Форматирование по умолчанию. Правило первое – определен ли формат.
После того, как оболочка определила имя типа того элемента, который требуется отобразить, первым делом она проверяет, определен ли формат просмотра для данного типа. Форматы просмотра указаны в специальных конфигурационных XML-файлах; некоторые из этих файлов устанавливаются вместе с Windows PowerShell. Попробуйте запустить следующую команду:
Dir $pshome

Файлы, название которых имеет расширение .format.ps1xml, содержат определенный формат просмотра. Оболочка загружает эти файлы каждый раз при запуске и хранит информацию в памяти в течение одной сессии.
Файлы .format.ps1xml, включенные в установочный пакет оболочки, поставляются компанией Microsoft® и обладают цифровой подписью Microsoft. Эти специфические файлы загружаются даже тогда, когда скрипты отключены, поэтому, оболочка может содержать множество параметров «по умолчанию». Цифровая подпись гарантирует, что файлы не могут быть просто изменены без предупреждения; если же файл каким-либо образом изменить (даже случайно), то подпись прекратит действовать, и оболочка перестанет загружать этот файл автоматически.
Если оболочке необходимо отобразить элемент, для которого уже определен формат просмотра, она отобразит его именно в этом формате. Если предусмотрено несколько вариантов просмотра, то оболочка выберет тот вариант, который первым записан в памяти. Это означает, что порядок, в котором XML-файлы загружены в память, имеет значение, поскольку первый из них всегда будет иметь преимущество над последующими.
Форматы просмотра могут быть очень простыми – список, таблица, широкая или пользовательская форма. Также они могут быть и очень сложными – с ярлыками и расширениями. Они могут даже содержать скриптовые коды для подсчета или получения значений тех или иных колонок таблицы.
Если формат просмотра не определен, в силу вступает второе правило.

Это правило определяет, какие свойства элемента должны отображаться. Если формат предопределен, то в нем уже указано, какие свойства должны отображаться, следовательно, второе правило не нужно. Если нет – оболочке необходимо решить, какие свойства показать. Чтобы принять решение, оболочка проверяет, зарегистрирован ли тип расширения DefaultDisplayPropertySet для того имени, которое необходимо отобразить. Типы расширений хранятся в XML-файлах, так же, как и форматы просмотра. Если вы запустите команду Dir $pshome, то увидите XML-файлы, определяющие типы расширения. Имя этих файлов имеет расширение .types.ps1xml, вместо .format.ps1xml.
Файлы .types.ps1xml, так же, как и .format.ps1xml, обладают цифровой подписью Microsoft и не подлежат изменению.
В оболочке хранятся типы расширения для многих имен типов элементов. Однако в действительности их намного больше – DefaultDisplayPropertySet является лишь одним из многих доступных расширений. Только то, что имя типа появилось в файле a .ps1xml не обязательно означает, что расширение DefaultDisplayPropertySet зарегистрировано. Тем не менее, если имя было зарегистрировано, оболочка будет использовать свойства, указанные в расширении, каждый раз. Если нет – будут отображаться все свойства элемента (правило номер 3).
После всех перечисленных действий оболочка просто задает себе вопрос: сколько свойств элемента необходимо показать – либо те, что определены в DefaultDisplayPropertySet, либо все.

Если формат просмотра был определен правилом №1, то правило №3 не учитывается. При заранее определенном формате просмотра всегда уточнаяется то, в каком виде будут отображаться свойства – список, таблица, и.т.д.
Если оболочке требуется отобразить не более четырех свойств, используется таблица. Если пять и более – используется список. Это правило гарантирует, что таблица поместится в стандартное окно консоли стандартного размера.
После того, как оболочка определила, какую форму (таблицу или список) следует использовать, она начинает создавать эту форму. Для этого происходит внутреннее обращение к командлету Format-List или Format-Table, куда и передаются элементы, которые необходимо отформатировать и показать.
|