Megosztás a következőn keresztül:


A PowerShell-modul szerzői szempontjai

Ez a dokumentum néhány útmutatást tartalmaz azzal kapcsolatban, hogyan készül a modul a legjobb teljesítmény érdekében.

Moduljegyzék-létrehozás

A következő irányelveket nem használó moduljegyzékek akkor is jelentős hatással lehetnek az általános PowerShell-teljesítményre, ha a modult nem használják munkamenetben.

A parancs automatikus felderítése elemzi az egyes modulokat annak meghatározásához, hogy mely parancsok exportálják a modult, és ez az elemzés költséges lehet. A modulelemzés eredményei felhasználónként gyorsítótárazva vannak, de a gyorsítótár nem érhető el első futtatáskor, ami a tárolók tipikus forgatókönyve. A modulelemzés során, ha az exportált parancsok teljes mértékben meghatározhatók a jegyzékből, elkerülhető a modul drágább elemzése.

Irányelvek

  • A moduljegyzékben ne használjon helyettesítő karaktereket a AliasesToExport, CmdletsToExportés FunctionsToExport a bejegyzésekben.

  • Ha a modul nem exportál egy adott típusú parancsot, ezt explicit módon adja meg a jegyzékben a megadott paranccsal @(). A hiányzó vagy $null a bejegyzés egyenértékű a helyettesítő karakter *megadásával.

Lehetőség szerint kerülni kell a következőket:

@{
    FunctionsToExport = '*'

    # Also avoid omitting an entry, it's equivalent to using a wildcard
    # CmdletsToExport = '*'
    # AliasesToExport = '*'
}

Ehelyett alkalmazza a következő módszert:

@{
    FunctionsToExport = 'Format-Hex', 'Format-Octal'
    CmdletsToExport = @()  # Specify an empty array, not $null
    AliasesToExport = @()  # Also ensure all three entries are present
}

A CDXML elkerülése

A modul implementálásának eldöntésekor három elsődleges lehetőség közül választhat:

  • Bináris (általában C#)
  • Szkript (PowerShell)
  • CDXML (XML-fájlburkoló CIM)

Ha a modul betöltésének sebessége fontos, a CDXML nagyjából nagyságrenddel lassabb, mint egy bináris modul.

A bináris modul azért töltődik be a leggyorsabban, mert előre van lefordítva, és az NGen használatával gépenként egyszer fordíthatja le a JIT-t.

A szkriptmodulok általában lassabban töltik be a bináris modulokat, mert a PowerShellnek elemeznie kell a szkriptet a fordítás és a végrehajtás előtt.

A CDXML-modul általában sokkal lassabb, mint egy szkriptmodul, mivel először elemeznie kell egy XML-fájlt, amely aztán elég sok Olyan PowerShell-szkriptet hoz létre, amelyet aztán elemezni és lefordítani kell.