Aracılığıyla paylaş


PowerShell İkili Modülü Yazma

İkili modül, cmdlet sınıfları içeren herhangi bir derleme (.dll) olabilir. Varsayılan olarak, ikili modül içeri aktarıldığında derlemedeki tüm cmdlet'ler içeri aktarılır. Ancak, kök modülü derleme olan bir modül bildirimi oluşturarak içeri aktarılan cmdlet'leri kısıtlayabilirsiniz. (Örneğin, bildirimin CmdletsToExport anahtarı yalnızca gerekli cmdlet'leri dışarı aktarmak için kullanılabilir.) Buna ek olarak, ikili modül ek dosyalar, dizin yapısı ve tek bir cmdlet'in yapamayacağı diğer yararlı yönetim bilgilerini içerebilir.

Aşağıdaki yordamda Bir PowerShell ikili modülünün nasıl oluşturulacağı ve yükleneceği açıklanmaktadır.

PowerShell ikili modülü oluşturma ve yükleme

  1. İhtiyacınız olan özelliklerle ikili bir PowerShell çözümü (C# dilinde yazılmış bir cmdlet gibi) oluşturun ve düzgün çalıştığından emin olun.

    Kod açısından bakıldığında, ikili modülün çekirdeği bir cmdlet derlemesidir. Aslında PowerShell, tek bir cmdlet derlemesini, geliştiricinin ek bir çabası olmadan yükleme ve kaldırma modülü olarak ele alır. Cmdlet yazma hakkında daha fazla bilgi için bkz. Windows PowerShell Cmdlet'i yazma.

  2. Gerekirse çözümünüzün geri kalanını oluşturun: (ek cmdlet'ler, XML dosyaları vb.) ve bunları bir modül bildirimiyle açıklayın.

    Bir modül bildirimi, çözümünüzdeki cmdlet derlemelerini açıklamaya ek olarak modülünüzün nasıl dışarı ve içeri aktarılmasını istediğinizi, hangi cmdlet'lerin kullanıma sunılacağını ve modüle hangi ek dosyaların girileceğini açıklayabilir. Ancak daha önce belirtildiği gibi, PowerShell ek çaba harcamadan ikili bir cmdlet'i modül gibi değerlendirebilir. Bu nedenle, modül bildirimi temel olarak birden çok dosyayı tek bir pakette birleştirmek veya belirli bir derleme için yayını açıkça denetlemek için kullanışlıdır. Daha fazla bilgi için bkz. PowerShell Modülü Bildirimi Yazma.

    Aşağıdaki kod, aynı dosyada modül olarak kullanılabilecek üç cmdlet içeren basitleştirilmiş bir C# örneğidir.

    using System.Management.Automation;           // Windows PowerShell namespace.
    
    namespace ModuleCmdlets
    {
      [Cmdlet(VerbsDiagnostic.Test,"BinaryModuleCmdlet1")]
      public class TestBinaryModuleCmdlet1Command : Cmdlet
      {
        protected override void BeginProcessing()
        {
          WriteObject("BinaryModuleCmdlet1 exported by the ModuleCmdlets module.");
        }
      }
    
      [Cmdlet(VerbsDiagnostic.Test, "BinaryModuleCmdlet2")]
      public class TestBinaryModuleCmdlet2Command : Cmdlet
      {
          protected override void BeginProcessing()
          {
              WriteObject("BinaryModuleCmdlet2 exported by the ModuleCmdlets module.");
          }
      }
    
      [Cmdlet(VerbsDiagnostic.Test, "BinaryModuleCmdlet3")]
      public class TestBinaryModuleCmdlet3Command : Cmdlet
      {
          protected override void BeginProcessing()
          {
              WriteObject("BinaryModuleCmdlet3 exported by the ModuleCmdlets module.");
          }
      }
    
    }
    
  3. Çözümünüzü paketleyin ve paketi PowerShell modül yolunda bir yere kaydedin.

    Genel $env:PSModulePath ortam değişkeni, PowerShell'in modülünüzü bulmak için kullandığı varsayılan yolları açıklar. Örneğin, bir sisteme modül kaydetmeye yönelik yaygın bir yol %SystemRoot%\Users\<user>\Documents\WindowsPowerShell\Modules\<moduleName>olacaktır. Varsayılan yolları kullanmıyorsanız, yükleme sırasında modülünüzün konumunu açıkça belirtmelisiniz. Çözümünüz için birden çok derlemeyi ve dosyayı depolamak için klasöre ihtiyacınız olabileceğinden, modülünüzü kaydetmek üzere bir klasör oluşturduğunuzdan emin olun.

    Teknik olarak, modülünüzü üzerinde herhangi bir yere $env:PSModulePath yüklemeniz gerekmez. Bunlar yalnızca PowerShell'in modülünüzü arayacağı varsayılan konumlardır. Ancak modülünüzü başka bir yerde depolamak için iyi bir nedeniniz yoksa bunu yapmak en iyi yöntem olarak kabul edilir. Daha fazla bilgi için bkz. PowerShell Modülü yükleme ve about_PSModulePath.

  4. Import-Moduleçağrısıyla modülünüzü PowerShell'e aktarın.

    Import-Module çağrısı modülünüzü etkin belleğe yükler. PowerShell 3.0 ve üzerini kullanıyorsanız, kodda modülünüzden bir komut çağırmak da bunu içeri aktarır. Daha fazla bilgi için bkz. PowerShell Modülünü İçeri Aktarma.

Modül başlatma ve temizleme kodu

Modülünüzün içeri aktarma veya kaldırma işlemi sırasında bulma görevi veya başlatma gibi bir işlem yapması gerekiyorsa ve IModuleAssemblyInitializer arabirimlerini uygulayabilirsinizIModuleAssemblyCleanup.

Uyarı

Bu düzen kesinlikle gerekli olmadığı sürece önerilmez. PowerShell'in performansını korumak için, öğeleri içeri aktarma yerine komutlarınızın çağrıldığı noktada yüklenmelidir.

Ek bileşen derlemelerini modül olarak içeri aktarma

Ek bileşen derlemelerinde bulunan cmdlet'ler ve sağlayıcılar ikili modüller olarak yüklenebilir. Ek bileşen derlemeleri ikili modüller olarak yüklendiğinde, ek bileşendeki cmdlet'ler ve sağlayıcılar kullanıcı tarafından kullanılabilir, ancak derlemedeki ek bileşen sınıfı yoksayılır ve ek bileşen kaydedilmez. Sonuç olarak, Windows PowerShell tarafından sağlanan ek bileşen cmdlet'leri, cmdlet'ler ve sağlayıcılar oturumda kullanılabilse bile ek bileşeni algılayamaz.

Ek olarak, ek bileşen tarafından başvuruda bulunılan biçimlendirme veya tür dosyaları ikili modülün bir parçası olarak içeri aktarılamaz. Biçimlendirme ve tür dosyalarını içeri aktarmak için bir modül bildirimi oluşturmanız gerekir. Bkz. PowerShell Modülü Bildirimi Yazma.

Ayrıca Bkz.

  • Windows PowerShell Modülü yazma