Soci (Soczó Zsolt) szakmai blogja

2008.01.31.

Powershell Custom Methods and Properties

Filed under: .NET,PowerShell,Szakmai élet — Soczó Zsolt @ 22:51

Soós Tibi powershellt tanul, ez lelkessé tett engem is. Én ugyan már túl vagyok az alap szintaxon, de a példái kapcsán érdekel, mi történik a háttérben.

Legutóbb ojjektumok properyjét listázgatta, formázgatta. Nyilván .NET programolóként tudjuk, hogy ez a reflection triviális felhasználása, de nem is ez a lényeg belőle. A kérdés akkor vált érdekessé, amikor elkezdte rendeztetni a Hastable-ben levő ojjektumokat ($result). A Hastable egy nagy ojjektumként megy át a csövön, ezért azon nincs mit rendezni. A példa GetEnumerator() hívása ravasz trükk. Ennek hatására a csőbe behullanak a cuccosok mint DictionaryEntry ojjektumok. Ez már egy sima, sik tömb, System.Array. Cool.
Ezt kéne rendeztetni, a Key propery alapján. Tibi viszont Name-et írt, és jól működött. Ez elgondolkodtatott. Miért megy ez jól, mikor nincs is Name-je a DictionaryEntry-nek?

No, hát a címbeli Custom Methods and Property-k miatt. Merthogy, a jámbor rendszergazda a saját szemüvegén keresztül látja a dolgokat, ő nem programoló. Ezért egyes nehezen emészthető fogalmakat, mint Key álnevekkel látnak el. Ezek xml fájlokban vannak, pl. a types.ps1xml-ben van elég sok. Konkrét alanyunk így néz ki:

   <Type>
        <Name>System.Collections.DictionaryEntry</Name>
        <Members>
            <AliasProperty>
                <Name>Name</Name>
                <ReferencedMemberName>Key</ReferencedMemberName>
            </AliasProperty>
        </Members>
    </Type>

Teccik látni, ezért érti a Sort-Object a Key helyett a Name property-t.

(A címbe majdnem bedobtam a Microsoft Powers Hell viccet, de ez már szakállas, nem?)

1 Comment

  1. (Nem szakállas, én még nem hallottam ;) )

    Comment by gerleim — 2008.02.01. @ 03:20

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress