Sdílet prostřednictvím


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 AliasesToExportsouboru , CmdletsToExporta FunctionsToExport 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.