Форматирование вывода Powershell - PullRequest
6 голосов
/ 17 марта 2012

Я разрабатываю командлет Powershell с использованием C #, и мне было интересно, есть ли способ управления форматированием объектов, которые я пишу в Powershell, в самом командлете.По сути, у меня есть объекты со слишком большим количеством свойств, чтобы их можно было легко отобразить на экране, и мой командлет отправляет их в Powershell с WriteObject()

. Я бы хотел, чтобы пользователи моих командлетов могли их запускать и, вв консоли Powershell считайте возвращенные данные, как если бы они делали это, используя командную строку.К сожалению, количество свойств, которые Powershell пытается поместить в столбцы, означает, что большинство из них усечены, и когда я добавляю больше, оно присваивает каждому свойству собственную строку, что хуже.

Я видел вещи, которые позволяют пользователюформатировать данные соответствующим образом, но ничего, что позволяет разработчику установить значение по умолчанию.По сути, мне нужно что-то вроде атрибута, который я могу применить к каждому свойству объектов, перекачиваемых в Powershell, который сообщает Powershell, отображать ли каждое свойство или нет (при условии, что пользователь не установил другие параметры форматирования).

(Я тоже пытался сделать их открытыми полями вместо свойств, и Powershell все еще показывает их)

1 Ответ

10 голосов
/ 17 марта 2012

Я предполагаю, что вы используете PowerShell 2.0.

Если ваш модуль называется MyModule, вы можете создать рядом с ним файл MyModule.Format.ps1xml, чтобы описать, какие свойства отображаются по умолчанию Format-List, Format-Table и т. Д. См. Get-Help about_Format.ps1xml* 1009. * и Обзор форматирования файла для получения дополнительной информации.

Чтобы связать файл форматирования с вашим модулем, вы должны создать манифест и определить элемент FormatsToProcess. New-ModuleManifest командлет поможет вам начать с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...