我希望能够设置我创建的PSObject的默认文本呈现。例如,我想要这段代码:
new-object psobject -property @{ name = 'bob'; job = 'janitor' }
目前输出:
name job
---- ---
bob janitor
改为输出:
name job
---- ---
bob he is a janitor, he is
即。将脚本块附加到刚刚执行此操作的PSObject的ToString():
{ 'he is a {0}, he is' -f $job }
我不需要为某种类型的C#做add-type
,是吗?我希望不是。我制作了许多本地psobjects,并希望将它们分散到它们上以帮助使它们的输出更好,但如果它是很多代码,它可能不值得。
答案 0 :(得分:15)
使用Add-Member
cmdlet覆盖默认的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()