Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten dokument zawiera pewne wskazówki dotyczące sposobu tworzenia modułu w celu uzyskania najlepszej wydajności.
Tworzenie manifestu modułu
Manifest modułu, który nie korzysta z poniższych wytycznych, może mieć zauważalny wpływ na ogólną wydajność programu PowerShell, nawet jeśli moduł nie jest używany w sesji.
Automatyczne odnajdywanie poleceń analizuje każdy moduł, aby określić, które polecenia eksportuje moduł, a ta analiza może być kosztowna. Wyniki analizy modułu są buforowane na użytkownika, ale pamięć podręczna nie jest dostępna przy pierwszym uruchomieniu, co jest typowym scenariuszem w przypadku kontenerów. Jeśli podczas analizy modułu można w pełni określić wyeksportowane polecenia z manifestu, można uniknąć droższej analizy modułu.
Wytyczne
W manifeście modułu nie używaj symboli wieloznacznych w wpisach
AliasesToExport,CmdletsToExportiFunctionsToExport.Jeśli moduł nie eksportuje poleceń określonego typu, określ to jawnie w manifeście, określając
@(). Brak wpisu lub$nulljest odpowiednikiem określenia symbolu wieloznakowego*.
W miarę możliwości należy unikać następujących czynności:
@{
FunctionsToExport = '*'
# Also avoid omitting an entry, it's equivalent to using a wildcard
# CmdletsToExport = '*'
# AliasesToExport = '*'
}
Zamiast tego użyj:
@{
FunctionsToExport = 'Format-Hex', 'Format-Octal'
CmdletsToExport = @() # Specify an empty array, not $null
AliasesToExport = @() # Also ensure all three entries are present
}
Unikanie programu CDXML
Podczas podejmowania decyzji o sposobie implementacji modułu istnieją trzy podstawowe opcje:
- Binarne (zwykle C#)
- Skrypt (PowerShell)
- CDXML (plik XML opakowujący CIM)
Jeśli szybkość ładowania modułu jest ważna, cdXML jest mniej więcej o rzędu wielkości wolniej niż moduł binarny.
Moduł binarny ładuje się najszybciej, ponieważ jest kompilowany z wyprzedzeniem i może używać narzędzia NGen do kompilowania JIT raz na maszynę.
Moduł skryptu zwykle ładuje nieco wolniej niż moduł binarny, ponieważ program PowerShell musi przeanalizować skrypt przed skompilowaniem i wykonaniem go.
Moduł CDXML jest zwykle znacznie wolniejszy niż moduł skryptu, ponieważ musi najpierw przeanalizować plik XML, który następnie generuje sporo skryptu programu PowerShell, który następnie jest analizowany i skompilowany.