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.

Modul manifestum készíté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ánymutatások

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

  • Ha a modul nem exportál egy adott típusú parancsot, ezt explicit módon adja meg a jegyzékben a @()megadásával. A hiányzó vagy $null bejegyzés egyenértékű a helyettesítő karakterek *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 használja a következőt:

@{
    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 (egy XML fájl, amely közrezárja a CIM-et)

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 le van fordítva, és az NGen segítségével gépenként egyszer hajtható végre a JIT fordítás.

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.