Bagikan melalui


Membuat Penyedia Windows PowerShell Dasar

Topik ini adalah titik awal untuk mempelajari cara membuat penyedia Windows PowerShell. Penyedia dasar yang dijelaskan di sini menyediakan metode untuk memulai dan menghentikan penyedia, dan meskipun penyedia ini tidak menyediakan sarana untuk mengakses penyimpanan data atau untuk mendapatkan atau mengatur data di penyimpanan data, itu menyediakan fungsionalitas dasar yang diperlukan oleh semua penyedia.

Seperti disebutkan sebelumnya, penyedia dasar yang dijelaskan di sini menerapkan metode untuk memulai dan menghentikan penyedia. Runtime Windows PowerShell memanggil metode ini untuk menginisialisasi dan membatalkan inisialisasi penyedia.

Nota

Anda dapat menemukan sampel penyedia ini dalam file AccessDBSampleProvider01.cs yang disediakan oleh Windows PowerShell.

Menentukan Kelas Penyedia Windows PowerShell

Langkah pertama dalam membuat penyedia Windows PowerShell adalah menentukan kelas .NET-nya. Penyedia dasar ini mendefinisikan kelas yang disebut AccessDBProvider yang berasal dari kelas dasar System.Management.Automation.Provider.CmdletProvider.

Disarankan agar Anda menempatkan kelas penyedia di namespace Providers namespace API Anda, misalnya, xxx.PowerShell.Providers. Penyedia ini menggunakan namespace Microsoft.Samples.PowerShell.Provider, tempat semua sampel penyedia Windows PowerShell berjalan.

Nota

Kelas untuk penyedia Windows PowerShell harus secara eksplisit ditandai sebagai publik. Kelas yang tidak ditandai sebagai publik akan default ke internal dan tidak akan ditemukan oleh runtime Windows PowerShell.

Berikut adalah definisi kelas untuk penyedia dasar ini:

[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : CmdletProvider

Tepat sebelum definisi kelas, Anda harus mendeklarasikan atribut System.Management.Automation.Provider.CmdletProviderAttribute, dengan sintaks [CmdletProvider()].

Anda dapat mengatur kata kunci atribut untuk mendeklarasikan kelas lebih lanjut jika perlu. Perhatikan bahwa atribut System.Management.Automation.Provider.CmdletProviderAttribute yang dinyatakan di sini mencakup dua parameter. Parameter atribut pertama menentukan nama yang mudah diingat secara default untuk penyedia, yang dapat diubah pengguna nanti. Parameter kedua menentukan kemampuan yang ditentukan Windows PowerShell yang diekspos penyedia ke runtime Windows PowerShell selama pemrosesan perintah. Nilai yang mungkin untuk kemampuan penyedia ditentukan oleh System.Management.Automation.Provider.ProviderCapabilities enumerasi. Karena ini adalah penyedia dasar, ia tidak mendukung kemampuan.

Nota

Nama penyedia Windows PowerShell yang sepenuhnya memenuhi syarat mencakup nama rakitan dan atribut lain yang ditentukan oleh Windows PowerShell saat pendaftaran penyedia.

Menentukan Informasi Status Provider-Specific

System.Management.Automation.Provider.CmdletProvider kelas dasar dan semua kelas turunan dianggap stateless karena runtime Windows PowerShell hanya membuat instans penyedia sesuai kebutuhan. Oleh karena itu, jika penyedia Anda memerlukan kontrol penuh dan pemeliharaan status untuk data khusus penyedia, penyedia harus memperoleh kelas dari kelas System.Management.Automation.ProviderInfo. Kelas turunan Anda harus menentukan anggota yang diperlukan untuk mempertahankan status sehingga data khusus penyedia dapat diakses ketika runtime Windows PowerShell memanggil metode System.Management.Automation.Provider.CmdletProvider.Start* untuk menginisialisasi penyedia.

Penyedia Windows PowerShell juga dapat mempertahankan status berbasis koneksi. Untuk informasi selengkapnya tentang mempertahankan status koneksi, lihat Membuat Penyedia Drive PowerShell.

Menginisialisasi Penyedia

Untuk menginisialisasi penyedia, runtime Windows PowerShell memanggil metode System.Management.Automation.Provider.CmdletProvider.Start* saat Windows PowerShell dimulai. Sebagian besar, penyedia Anda dapat menggunakan implementasi default metode ini, yang hanya mengembalikan objek System.Management.Automation.ProviderInfo yang menjelaskan penyedia Anda. Namun, dalam kasus di mana Anda ingin menambahkan informasi inisialisasi tambahan, Anda harus menerapkan metode System.Management.Automation.Provider.CmdletProvider.Start* sendiri yang mengembalikan versi System.Management.Automation.ProviderInfo objek yang diteruskan ke penyedia Anda. Secara umum, metode ini harus mengembalikan objek System.Management.Automation.ProviderInfo yang disediakan atau objek System.Management.Automation.ProviderInfo yang berisi informasi inisialisasi lainnya.

Penyedia dasar ini tidak mengambil alih metode ini. Namun, kode berikut menunjukkan implementasi default metode ini:

Penyedia dapat mempertahankan status informasi khusus penyedia seperti yang dijelaskan dalam Menentukan Status Data khusus Penyedia. Dalam hal ini, implementasi Anda harus mengambil alih metode System.Management.Automation.Provider.CmdletProvider.Start* untuk mengembalikan instans kelas turunan.

Mulai Parameter Dinamis

Implementasi penyedia Anda dari metode System.Management.Automation.Provider.CmdletProvider.Start* mungkin memerlukan parameter tambahan. Dalam hal ini, penyedia harus mengambil alih metode System.Management.Automation.Provider.CmdletProvider.StartDynamicParameters* metode dan mengembalikan objek yang memiliki properti dan bidang dengan atribut penguraian yang mirip dengan kelas cmdlet atau System.Management.Automation.RuntimeDefinedParameterDictionary objek.

Penyedia dasar ini tidak mengambil alih metode ini. Namun, kode berikut menunjukkan implementasi default metode ini:

Membatalkan menginisialisasi Penyedia

Untuk membebaskan sumber daya yang digunakan penyedia Windows PowerShell, penyedia Anda harus menerapkan metode System.Management.Automation.Provider.CmdletProvider.Stop* sendiri. Metode ini dipanggil oleh runtime Windows PowerShell untuk membatalkan inisialisasi penyedia pada penutupan sesi.

Penyedia dasar ini tidak mengambil alih metode ini. Namun, kode berikut menunjukkan implementasi default metode ini:

Sampel Kode

Untuk kode sampel lengkap, lihat Sampel Kode AccessDbProviderSample01.

Menguji Penyedia Windows PowerShell

Setelah penyedia Windows PowerShell Anda terdaftar di Windows PowerShell, Anda dapat mengujinya dengan menjalankan cmdlet yang didukung pada baris perintah. Untuk penyedia dasar ini, jalankan shell baru dan gunakan cmdlet Get-PSProvider untuk mengambil daftar penyedia dan memastikan bahwa penyedia AccessDb ada.

Get-PSProvider

Output berikut muncul:

Name                 Capabilities                  Drives
----                 ------------                  ------
AccessDb             None                          {}
Alias                ShouldProcess                 {Alias}
Environment          ShouldProcess                 {Env}
FileSystem           Filter, ShouldProcess         {C, Z}
Function             ShouldProcess                 {function}
Registry             ShouldProcess                 {HKLM, HKCU}

Lihat Juga

Membuat Penyedia Windows PowerShell

Merancang Penyedia Windows PowerShell Anda