Как установить ToString () по умолчанию для локально созданного PSObject? - PullRequest
8 голосов
/ 28 марта 2012

Я хотел бы иметь возможность установить визуализацию текста по умолчанию для PSObject, который я создаю. Например, я хотел бы этот код:

new-object psobject -property @{ name = 'bob'; job = 'janitor' }

, который в настоящее время выводит это:

name  job
----  ---
bob   janitor

вместо этого вывести это:

name  job
----  ---
bob   he is a janitor, he is

т.е. прикрепить блок скрипта к ToString () PSObject, который просто делает это:

{ 'he is a {0}, he is' -f $job }

Мне не нужно делать add-type с некоторым C # для типа, не так ли? Надеюсь нет. Я создаю много локальных псобъектов и хотел бы разбросать их по строкам, чтобы сделать вывод более приятным, но если кода много, то, вероятно, оно того не стоит.

1 Ответ

15 голосов
/ 28 марта 2012

Используйте командлет Add-Member для переопределения метода ToString по умолчанию:

$pso = new-object psobject -property @{ name = 'bob'; job = 'janitor' }
$pso | add-member scriptmethod tostring { 'he is a {0}, he is' -f $this.job } -force 
$pso.tostring()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...