Temel bir Windows PowerShell Sağlayıcısı Oluşturma

Bu konu, bir sağlayıcı oluşturma hakkında bilgi Windows PowerShell noktasıdır. Burada açıklanan temel sağlayıcı, sağlayıcıyı başlatma ve durdurma yöntemlerini sağlar ve bu sağlayıcı bir veri deposuna erişmek veya veri deposuna veri almak veya ayarlamak için bir yöntem sağlamasa da, tüm sağlayıcılar için gereken temel işlevselliği sağlar.

Daha önce belirtildiği gibi, burada açıklanan temel sağlayıcı sağlayıcıyı başlatma ve durdurma yöntemlerini kullanır. Çalışma Windows PowerShell, sağlayıcıyı başlatmak ve başlatmayı başlatmak için bu yöntemleri çağırıyor.

Not

Bu sağlayıcının bir örneğini, uygulama tarafından sağlanan AccessDBSampleProvider01.cs dosyasında Windows PowerShell.

Windows PowerShell Sağlayıcı Sınıfını Tanımlama

Bir sağlayıcı oluşturmanın ilk Windows PowerShell. .NET sınıfını tanımlamaktır. Bu temel sağlayıcı, AccessDBProvider System.Management.Automation.Provider.Cmdletprovider temel sınıfından türeyen adlı bir sınıf tanımlar.

Sağlayıcı sınıflarınızı API ad alanınıza Providers (örneğin, xxx.PowerShell.Providers) bir ad alanına yer vermek önerilir. Bu sağlayıcı, Microsoft.Samples.PowerShell.Provider tüm sağlayıcı örneklerinin Windows PowerShell kullanır.

Not

Bir sağlayıcının sınıfı Windows PowerShell açıkça genel olarak işaretlenir. Genel olarak işaretlenen sınıflar varsayılan olarak içtir ve çalışma zamanı tarafından Windows PowerShell bulunmayacak.

Bu temel sağlayıcı için sınıf tanımı şu şekildedir:

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

Sınıf tanımına hemen önce System.Management.Automation.Provider.Cmdletproviderattribute özniteliğini [CmdletProvider()] söz dizimi ile bildirebilirsiniz.

Gerekirse sınıfını daha fazla bildirecek öznitelik anahtar sözcüklerini ayarlayın. Burada bildirilen System.Management.Automation.Provider.Cmdletproviderattribute özniteliğinin iki parametreyi içerir. İlk öznitelik parametresi sağlayıcının varsayılan kolay adını belirtir ve bu adı daha sonra kullanıcı değiştirebilir. İkinci parametre, Windows PowerShell işleme sırasında sağlayıcının Windows PowerShell tanımlandığı özellikleri belirtir. Sağlayıcı özellikleri için olası değerler System.Management.Automation.Provider.Provider.Providercapabilities numaralama tarafından tanımlanır. Bu bir temel sağlayıcı olduğundan, hiçbir özelliği desteklemez.

Not

Windows PowerShell sağlayıcının tam adı, sağlayıcı kaydı sırasında Windows PowerShell tarafından belirlenen derleme adını ve diğer öznitelikleri içerir.

Provider-Specific Durum Bilgilerini Tanımlama

System.Management.Automation.Provider.Cmdletprovider temel sınıfı ve türetilen tüm sınıflar durum bilgisiz olarak kabul edilir çünkü Windows PowerShell yalnızca gerektiğinde sağlayıcı örnekleri oluşturur. Bu nedenle, sağlayıcınız sağlayıcıya özgü veriler için tam denetim ve durum bakımı gerektiriyorsa, System.Management.Automation.Providerinfo sınıfından bir sınıf türetmiş olmalıdır. Türetilmiş sınıf, sağlayıcıyı başlatmak için System.Management.Automation.Provider.Cmdletprovider.Start* yöntemini çağıran Windows PowerShell çalışma zamanının sağlayıcıya özgü verilere erişilebilmek için durumu korumak için gerekli üyeleri tanımlaması gerekir.

Bir Windows PowerShell sağlayıcı bağlantı tabanlı durumu da sürdürebilirsiniz. Bağlantı durumunu koruma hakkında daha fazla bilgi için bkz. PowerShell Sürücü Sağlayıcısı Oluşturma.

Sağlayıcıyı Başlatma

Sağlayıcıyı başlatmak için Windows PowerShell çalışma zamanı, Windows PowerShell başlatılmışsa System.Management.Automation.Provider.Cmdletprovider.Start* yöntemini çağırarak. Sağlayıcınız çoğu zaman bu yöntemin varsayılan uygulamasını kullanabilir ve bu yöntem sağlayıcınızı tanımlayan System.Management.Automation.Providerinfo nesnesini döndürür. Ancak, ek başlatma bilgileri eklemek istediğiniz durumda, sağlayıcınıza geçirilen System.Management.Automation.Providerinfo nesnesinin değiştirilmiş bir sürümünü döndüren kendi System.Management.Automation.Provider.Cmdletprovider.Start* yönteminizi uygulamanız gerekir. Genel olarak, bu yöntem, sağlanan System.Management.Automation.Providerinfo nesnesini veya diğer başlatma bilgilerini içeren değiştirilmiş bir System.Management.Automation.Providerinfo nesnesini geri getirmelidir.

Bu temel sağlayıcı bu yöntemi geçersiz kılmaz. Ancak, aşağıdaki kod bu yöntemin varsayılan uygulamasını gösterir:

Sağlayıcı, Sağlayıcıya Özgü Veri Durumunu Tanımlama konusunda açıklandığı gibi sağlayıcıya özgü bilgilerin durumunu koruyabilirsiniz. Bu durumda, türetilmiş sınıfın bir örneğini geri dönmek için, uygulamanız System.Management.Automation.Provider.Cmdletprovider.Start* yöntemini geçersiz kılmalı.

Dinamik Parametreleri Başlatma

System.Management.Automation.Provider.Cmdletprovider.Start* yönteminin sağlayıcı uygulaması için ek parametreler gerekebilir. Bu durumda, sağlayıcı System.Management.Automation.Provider.Cmdletprovider.Startdynamicparameters* yöntemini geçersiz kılmalı ve cmdlet sınıfına veya System.Management.Automation.Runtimedefinedparameterdictionary nesnesine benzer özniteliklere sahip özelliklere ve alanlara sahip bir nesne geri getirerek.

Bu temel sağlayıcı bu yöntemi geçersiz kılmaz. Ancak, aşağıdaki kod bu yöntemin varsayılan uygulamasını gösterir:

Sağlayıcıyı uninitializing

Sağlayıcının kullandığı kaynakları Windows PowerShell için sağlayıcınızın kendi System.Management.Automation.Provider.Cmdletprovider.Stop* yöntemini uygulaması gerekir. Bu yöntem, Windows PowerShell bir oturumun sonunda sağlayıcıyı uninitialize etmek için çalışma zamanı tarafından çağrılır.

Bu temel sağlayıcı bu yöntemi geçersiz kılmaz. Ancak, aşağıdaki kod bu yöntemin varsayılan uygulamasını gösterir:

Kod Örneği

Tam örnek kod için bkz. AccessDbProviderSample01 Kod Örneği.

Windows PowerShell Sağlayıcısını Test Etme

Windows PowerShell sağlayıcınız Windows PowerShell komut satırına desteklenen cmdlet'leri çalıştırarak test edersiniz. Bu temel sağlayıcı için yeni kabuğu çalıştırın ve cmdlet'ini kullanarak sağlayıcı listesini alın ve AccessDb sağlayıcısının mevcut Get-PSProvider olduğundan emin olun.

Get-PSProvider

Aşağıdaki çıkış görüntülenir:

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

Ayrıca Bkz.

Windows PowerShell Sağlayıcıları Oluşturma

Windows PowerShell Sağlayıcınızı Tasarlama