我希望能够设置我创建的PSObject的默认文本呈现。例如,我想要以下代码:

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

当前输出以下内容:
name  job
----  ---
bob   janitor

改为输出以下内容:
name  job
----  ---
bob   he is a janitor, he is

IE。将脚本块附加到PSObject的ToString()即可:
{ 'he is a {0}, he is' -f $job }

我不需要为该类型的C#做add-type,对吗?我希望不是。我制作了许多本地psobject,并希望在它们上散布字符串以帮助使它们的输出更好,但如果有很多代码,那可能就不值得了。

最佳答案

使用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()

10-08 18:16