2012-03-28 23 views
7

Oluşturduğum bir PSObject öğesinin varsayılan metin oluşturmayı ayarlayabilmek istiyorum.Yerel olarak oluşturulan bir PSObject öğesinde varsayılan ToString() nasıl ayarlanır?

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

anda bu çıkışı: Örneğin, ben bu kodu istiyorum

name job 
---- --- 
bob janitor 

yerine çıkışını bu:

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

yani

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

Ben türü için bazı C# ile bir add-type yapmanız gerekmez mı ki: sadece bunu yapar PSObject en ToString() için komut bloğunu takmak? Umarım değildir. Çok sayıda yerel psobject yapıyorum ve çıkışlarını daha güzel hale getirmeye yardımcı olmak için üzerlerine serpinti yapmak istiyorum, ancak çok fazla kod varsa muhtemelen buna değmeyecek.

$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() 

cevap

14

varsayılan ToString yöntemini geçersiz kılmak için Add-Member cmdlet'ini kullanın. Teşekkür ederim.
+0

Vay gerçekten basit olmasıdır: – scobi

İlgili konular