Kimeneti objektumok kiterjesztése

A parancsmagok.NET-keretrendszer függvények és szkriptek által visszaadott összes objektum típusfájlokkal (.ps1xml) bővíthető. A fájltípusok XML-alapú fájlok, amelyek segítségével tulajdonságokat és metódusokat adhat hozzá a meglévő objektumokhoz. A fájl például Windows PowerShell Types.ps1xml fájlt biztosítja, amely elemeket ad hozzá több meglévő .NET-keretrendszer objektumhoz. A Types.ps1xml fájl a telepítési könyvtárban Windows PowerShell található ( $pshome ). Saját típusú fájlokat hozhat létre az objektumok további kibővítése vagy más objektumok kiterjesztése érdekében. Ha egy objektumot egy típusfájl használatával bővít ki, az objektum bármely példánya ki lesz bővítve az új elemekkel.

A System.Array objektum kiterjesztése

Az alábbi példa bemutatja, Windows PowerShell a Types.ps1xml fájl System.Array objektumát. Alapértelmezés szerint a System.Array objektumok tulajdonsága a tömbben lévő objektumok számát Length listázza. Mivel azonban a "length" név nem írja le egyértelműen a tulajdonságot, a Windows PowerShell hozzáadja az alias tulajdonságot, amely ugyanazt az értéket jeleníti meg, mint a Count Length tulajdonság. A következő XML-fájl hozzáadja Count a tulajdonságot a System.Array típushoz.

<Type>
  <Name>System.Array</Name>
  <Members>
    <AliasProperty>
      <Name>Count</Name>
      <ReferencedMemberName>Length</ReferencedMemberName>
    </AliasProperty>
  </Members>
</Type>

Az új aliastulajdonság az alábbi példában látható módon bármely tömbben használható Get-Member paranccsal.

Get-Member -InputObject (1,2,3,4)

A parancs a következő eredményeket adja vissza.

Name           MemberType    Definition
----           ----------    ----------
Count          AliasProperty Count = Length
Address        Method        System.Object& Address(Int32 )
Clone          Method        System.Object Clone()
CopyTo         Method        System.Void CopyTo(Array array, Int32 index):
Equals         Method        System.Boolean Equals(Object obj)
Get            Method        System.Object Get(Int32 )
...
Length         Property      System.Int32 Length {get;}

A tulajdonság vagy a tulajdonság használatával meghatározhatja, hogy hány objektum található Count Length egy tömbben. Például:

PS> (1, 2, 3, 4).Count
4
PS> (1, 2, 3, 4).Length
4

Egyéni típusok fájljai

Egyéni fájltípus létrehozásához először másolja ki a meglévő fájltípusokat. Az új fájlnak bármilyen neve lehet, de .ps1xml fájlnévkiterjesztéssel kell lennie. A fájl másolása után az új fájlt bármely, a Windows PowerShell számára elérhető könyvtárba helyezze, de hasznos, ha a fájlokat az Windows PowerShell telepítési könyvtárában ( ) vagy a telepítési könyvtár alkönyvtárában helyezzük $pshome el.

Ha saját kiterjesztett típusokat szeretne hozzáadni a fájlhoz, mindegyik kiterjeszteni kívánt objektumhoz adjon hozzá egy types (típus) elemet. Az alábbi témakörök példákat tartalmaznak.

Miután meghatározta a saját kiterjesztett típusait, a következő módszerek egyikével tegye elérhetővé a kiterjesztett objektumokat:

  • Ha a bővített típusfájlt elérhetővé szeretne tenni az aktuális munkamenet számára, használja az Update-TypeData parancsmagot az új fájl hozzáadásához. Ha azt szeretné, hogy a típusok elsőbbséget élveznek a más típusú fájlokban (például a Types.ps1xml fájlban) definiált típusokkal, használja az PrependData Update-TypeData parancsmag paraméterét.
  • Ha a bővített típusfájlt minden későbbi munkamenet számára elérhetővé szeretne tenni, adja hozzá a típusfájlt egy modulhoz, exportálja az aktuális munkamenetet, vagy adja hozzá az Update-TypeData parancsot a Windows PowerShell profiljához.

Aláírástípusok fájljai

A fájltípusokat digitális aláírással kell aláírni az illetéktelen módosítás megelőzése érdekében, mivel az XML parancsfájlblokkokat is tartalmazhat. További információ a digitális aláírások hozzáadásáról: about_Signing

Lásd még:

Objektumok alapértelmezett tulajdonságainak definiálása

Objektumok alapértelmezett módszereinek definiálása

Objektumok alapértelmezett tagkészleteinek definiálása

Windows PowerShell-parancsmag írása