Aspekty vytváření modulů PowerShellu
Tento dokument obsahuje některé pokyny týkající se vytváření modulu pro zajištění nejlepšího výkonu.
Vytváření manifestu modulu
Manifest modulu, který nepoužívá následující pokyny, může mít výrazný dopad na obecný výkon PowerShellu, i když se modul nepoužívá v relaci.
Automatické zjišťování příkazů analyzuje každý modul a určí, které příkazy modul exportuje a která analýza může být nákladná. Výsledky analýzy modulů se ukládají do mezipaměti pro jednotlivé uživatele, ale mezipaměť není při prvním spuštění dostupná, což je typický scénář s kontejnery. Pokud se během analýzy modulu dají exportované příkazy plně určit z manifestu, můžete se vyhnout dražší analýze modulu.
Pokyny
V manifestu modulu nepoužívejte zástupné cardy v
AliasesToExport
souboru ,CmdletsToExport
aFunctionsToExport
položky.Pokud modul neexportuje příkazy určitého typu, zadejte tento příkaz explicitně v manifestu zadáním
@()
. Chybějící položka nebo$null
položka je ekvivalentní k zadání zástupné card*
.
Pokud je to možné, měli byste se vyhnout následujícímu:
@{
FunctionsToExport = '*'
# Also avoid omitting an entry, it's equivalent to using a wildcard
# CmdletsToExport = '*'
# AliasesToExport = '*'
}
Postupujte takto:
@{
FunctionsToExport = 'Format-Hex', 'Format-Octal'
CmdletsToExport = @() # Specify an empty array, not $null
AliasesToExport = @() # Also ensure all three entries are present
}
Vyhněte se CDXML
Při rozhodování o tom, jak implementovat modul, existují tři hlavní volby:
- Binární (obvykle C#)
- Skript (PowerShell)
- CDXML (obtékání souboru XML CIM)
Pokud je rychlost načítání modulu důležitá, je CDXML zhruba o řádově pomalejší než binární modul.
Binární modul se načte nejrychleji, protože je předem zkompilovaný a může použít NGen ke kompilaci JIT jednou na počítač.
Modul skriptu obvykle načte trochu pomaleji než binární modul, protože PowerShell musí skript před kompilací a spuštěním parsovat.
Modul CDXML je obvykle mnohem pomalejší než modul skriptu, protože musí nejprve parsovat soubor XML, který pak vygeneruje poměrně hodně powershellového skriptu, který se pak parsuje a zkompiluje.