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
ésFunctionsToExport
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.