Bagikan melalui


Cara Menulis Modul Biner PowerShell

Modul biner dapat berupa rakitan apa pun (.dll) yang berisi kelas cmdlet. Secara default, semua cmdlet dalam rakitan diimpor saat modul biner diimpor. Namun, Anda dapat membatasi cmdlet yang diimpor dengan membuat manifes modul yang modul akarnya adalah perakitan. (Misalnya, kunci CmdletsToExport dari manifes hanya dapat digunakan untuk mengekspor cmdlet yang diperlukan saja.) Selain itu, modul biner dapat berisi file tambahan, struktur direktori, dan bagian lain dari informasi manajemen yang berguna yang tidak dapat digunakan oleh satu cmdlet.

Prosedur berikut menjelaskan cara membuat dan menginstal modul biner PowerShell.

Cara membuat dan menginstal modul biner PowerShell

  1. Buat solusi PowerShell biner (seperti cmdlet yang ditulis dalam C#), dengan kemampuan yang Anda butuhkan, dan pastikan solusi tersebut berjalan dengan benar.

    Dari perspektif kode, inti modul biner hanyalah perakitan cmdlet. Bahkan, PowerShell akan memperlakukan satu cmdlet assembly sebagai modul, dalam hal pemuatan dan pembongkaran, tanpa upaya tambahan di pihak pengembang. Untuk informasi selengkapnya tentang menulis cmdlet, lihat Menulis Cmdlet Windows PowerShell.

  2. Jika perlu, buat solusi Lainnya: (cmdlet tambahan, file XML, dan sebagainya) dan jelaskan dengan manifes modul.

    Selain menjelaskan rakitan cmdlet dalam solusi Anda, manifes modul dapat menjelaskan bagaimana Anda ingin modul Anda diekspor dan diimpor, cmdlet apa yang akan diekspos, dan file tambahan apa yang akan masuk ke modul. Namun seperti yang dinyatakan sebelumnya, PowerShell dapat memperlakukan cmdlet biner seperti modul tanpa upaya tambahan. Dengan demikian, manifes modul berguna terutama untuk menggabungkan beberapa file ke dalam satu paket, atau untuk mengontrol publikasi secara eksplisit untuk perakitan tertentu. Untuk informasi selengkapnya, lihat Cara Menulis Manifes Modul PowerShell.

    Kode berikut adalah blok kode C# yang sangat sederhana yang berisi tiga cmdlet dalam file yang sama yang dapat digunakan sebagai modul.

    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. Kemas solusi Anda, dan simpan paket ke suatu tempat di jalur modul PowerShell.

    Variabel lingkungan global PSModulePath menjelaskan jalur default yang akan digunakan PowerShell untuk menemukan modul Anda. Misalnya, jalur umum untuk menyimpan modul pada sistem akan %SystemRoot%\Users\<user>\Documents\WindowsPowerShell\Modules\<moduleName>. Jika Anda tidak menggunakan jalur default, Anda harus secara eksplisit menyatakan lokasi modul Anda selama penginstalan. Pastikan untuk membuat folder untuk menyimpan modul Anda, karena Anda mungkin memerlukan folder untuk menyimpan beberapa rakitan dan file untuk solusi Anda.

    Perhatikan bahwa secara teknis Anda tidak perlu menginstal modul Anda di mana saja di PSModulePath - itu hanya lokasi default yang akan dicari PowerShell untuk modul Anda. Namun, ini dianggap sebagai praktik terbaik untuk melakukannya, kecuali Anda memiliki alasan yang baik untuk menyimpan modul Anda di tempat lain. Untuk informasi selengkapnya, lihat Menginstal modul PowerShell dan about_PSModulePath.

  4. Impor modul Anda ke PowerShell dengan panggilan ke Import-Module.

    Memanggil Import-Module akan memuat modul Anda ke dalam memori aktif. Jika Anda menggunakan PowerShell 3.0 dan yang lebih baru, cukup panggil nama modul Anda dalam kode juga akan mengimpornya; untuk informasi selengkapnya, lihat Mengimpor Modul PowerShell.

Mengimpor Rakitan Snap-in sebagai Modul

Cmdlet dan penyedia yang ada dalam rakitan snap-in dapat dimuat sebagai modul biner. Ketika rakitan snap-in dimuat sebagai modul biner, cmdlet dan penyedia dalam snap-in tersedia untuk pengguna, tetapi kelas snap-in di rakitan diabaikan, dan snap-in tidak terdaftar. Akibatnya, cmdlet snap-in yang disediakan oleh Windows PowerShell tidak dapat mendeteksi snap-in meskipun cmdlet dan penyedia tersedia untuk sesi tersebut.

Selain itu, file pemformatan atau jenis apa pun yang direferensikan oleh snap-in tidak dapat diimpor sebagai bagian dari modul biner. Untuk mengimpor file pemformatan dan jenis, Anda harus membuat manifes modul. Lihat, Cara Menulis Manifes Modul PowerShell.

Lihat Juga

Menulis modul Windows PowerShell