2009-05-08 18 views

cevap

8

Bir uzantı yöntemiyle bir türe yamalamanın bir yolunu bilmiyorum. Ama

PS> $a = "foo" 
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru 
PS> $a.Foo() 
foobar 

DÜZENLEME Ben PowerShell seviyorum ama gerçekten şifreli sözdizimi buluyor tamamen ve tamamen okunabilir PowerShell Syntax'i :)

açıklar eklenti üye komut üzerinden bir nesne yama kesinlikle mümkün zamandan zamana.

  • "yani": Bu inputObject kısaltmasıdır ve esasen bu
  • "-memberType" için üye eklemek diyor ki: Eğer yöntemlerle, not özellikleri içeren bir çalışma zamanı nesneye ekleyebilir değerlerin çok farklı türleri vardır , code method, etc ... Tam liste için "get-help add-member -full" kısmına bakın
  • "-passthru": Sadece bir üye eklenmiş olan nesneyi alın ve boru hattını aşağı itin. Bu bayrak olmadan, atama $a'a atama ve boş boru hattı olacaktır.
  • atama çağrısı temel $a şimdi size belirli bir türde eklemek istediğiniz bir yöntem veya özellik varsa, PowerShell en adaptif türü aracılığıyla özel bir türü uzantısı oluşturabilir
+0

+1 bulunabilir. $ A = add-üye biraz garip görünüyor ve -in ve -passthru anahtarları ne yapıyor? – BuddyJoe

+0

@Tyndall, yorumlarla güncellendi – JaredPar

+0

Teşekkürler JaredPar – BuddyJoe

9

eklendi yöntemi vardır sağlanmasıdır sistemi.

Özel tür bir uzantı, bir türe öznitelik veya komut dosyası yöntemini açıklayan ve daha sonra Update-TypeData cmdlet'i aracılığıyla PowerShell oturumuna yükleyen bir XML dosyasıdır.

bu büyük bir örnek biraz sözdizimi üzerinde durmak Could PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue)

+0

Evet, bu, orijinal posterin aradığı cevaptır. – JasonMArcher

+0

Bu yönteme rastladım. Emin değil. PowerShell'de XML'e karşı olabildiğince fazla tutmak istiyorum. hmmm. Ben çok ve "mods" bir sürü varsa, bu yöntemi kullanacağım sanırım. – BuddyJoe

İlgili konular