Aracılığıyla paylaş


PowerShell modülü yazma konusunda dikkat edilmesi gerekenler

Bu belge, bir modülün en iyi performans için nasıl yazıldıklarıyla ilgili bazı yönergeleri içerir.

Modül Bildirimi Yazma

Aşağıdaki yönergeleri kullanmayan bir modül bildirimi, modül bir oturumda kullanılmasa bile genel PowerShell performansı üzerinde belirgin bir etkiye sahip olabilir.

Komut otomatik bulma, modülün hangi komutları dışarı aktardığını ve bu analizin pahalı olabileceğini belirlemek için her modülü analiz eder. Modül analizinin sonuçları kullanıcı başına önbelleğe alınır, ancak önbellek ilk çalıştırmada kullanılamaz; bu kapsayıcılarla ilgili tipik bir senaryodur. Modül analizi sırasında, dışarı aktarılan komutlar bildirimden tam olarak belirlenebiliyorsa modülün daha pahalı bir şekilde analiz edilmesi önlenebilir.

Yönergeler

  • Modül bildiriminde , CmdletsToExportve FunctionsToExport girdilerinde AliasesToExportjoker karakterler kullanmayın.

  • Modül belirli bir türdeki komutları dışarı aktarmıyorsa, belirterek @()bildirimde bunu açıkça belirtin. Eksik veya $null girdi, joker karakteri *belirtmekle eşdeğerdir.

Mümkün olduğunda aşağıdakilerden kaçınılmalıdır:

@{
    FunctionsToExport = '*'

    # Also avoid omitting an entry, it's equivalent to using a wildcard
    # CmdletsToExport = '*'
    # AliasesToExport = '*'
}

Bunun yerine aşağıdakini kullanın:

@{
    FunctionsToExport = 'Format-Hex', 'Format-Octal'
    CmdletsToExport = @()  # Specify an empty array, not $null
    AliasesToExport = @()  # Also ensure all three entries are present
}

CDXML'yi kullanmaktan kaçının

Modülünüzü nasıl uygulayacaklarına karar verirken üç birincil seçenek vardır:

  • İkili (genellikle C#)
  • Betik (PowerShell)
  • CDXML (CIM'yi sarmalama XML dosyası)

Modülünüzü yükleme hızı önemliyse, CDXML kabaca ikili modülden daha yavaş bir büyüklük sırasıdır.

İkili modül, önceden derlendiğinden ve makine başına bir kez JIT derlemek için NGen'i kullanabileceğinden en hızlı modülü yükler.

PowerShell'in derlemeden ve yürütmeden önce betiği ayrıştırması gerektiğinden, betik modülü genellikle ikili modülden biraz daha yavaş yüklenir.

CDXML modülü genellikle bir betik modülünden çok daha yavaştır çünkü önce bir XML dosyasını ayrıştırması gerekir ve daha sonra ayrıştırılan ve derlenen biraz PowerShell betiği oluşturur.