Windows PowerShell öğe sağlayıcısı oluşturma
Bu konu, bir veri deposundaki verileri yönetebilecek bir Windows PowerShell sağlayıcısının nasıl oluşturulacağını açıklamaktadır. Bu konuda, depodaki veri öğelerine veri deposunun "öğeleri" adı verilmektedir. Sonuç olarak, mağazadaki verileri yönetebilen bir sağlayıcıya Windows PowerShell öğe sağlayıcısı denir.
Not
Windows Vista için Microsoft Windows Yazılım Geliştirme Seti'ni ve .NET Framework 3.0 Çalışma Zamanı Bileşenlerini kullanarak bu sağlayıcının C# kaynak dosyasını (AccessDBSampleProvider03.cs) indirebilirsiniz. İndirme talimatları için bkz. Windows PowerShell Nasıl Kurulur ve Windows PowerShell SDK'sını İndirme. İndirilen kaynak dosyalar PowerShell Örnekleri dizininde mevcuttur. Diğer Windows PowerShell sağlayıcı uygulamaları hakkında daha fazla bilgi için bkz. Windows PowerShell Sağlayıcınızı Tasarlama.
Bu konuda açıklanan Windows PowerShell öğe sağlayıcısı, Access veritabanından veri öğelerini alır. Bu durumda, bir "öğe" ya Access veritabanındaki bir tablodur ya da tablodaki bir satırdır.
Windows PowerShell öğe sağlayıcı sınıfını tanımlama
Windows PowerShell öğe sağlayıcısının, System.Management.Automation.Provider.ItemCmdletProvider temel sınıfından türetilen bir .NET sınıfını tanımlaması gerekir. Bu bölümde açıklanan öğe sağlayıcının sınıf tanımı aşağıdadır.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : ItemCmdletProvider
Bu sınıf tanımında System.Management.Automation.Provider.CmdletProviderAttribute özniteliğinin iki parametre içerdiğini unutmayın. İlk parametre, sağlayıcı için Windows PowerShell tarafından kullanılan kullanımı kolay bir ad belirtir. İkinci parametre, sağlayıcının komut işleme sırasında Windows PowerShell çalışma zamanına sunduğu Windows PowerShell'e özgü yetenekleri belirtir. Bu sağlayıcı için Windows PowerShell'e özgü ek yetenekler yoktur.
Temel işlevselliği tanımlama
Windows PowerShell Sağlayıcınızı Tasarlayın bölümünde açıklandığı gibi, System.Management.Automation.Provider.DriveCmdletProvider sınıfı, farklı sağlayıcı işlevleri sağlayan diğer birkaç sınıftan türetilir. Bu nedenle bir Windows PowerShell öğe sağlayıcısının bu sınıflar tarafından sağlanan tüm işlevleri tanımlaması gerekir.
Oturuma özgü başlatma bilgilerini eklemeye ve sağlayıcı tarafından kullanılan kaynakları serbest bırakmaya yönelik işlevselliğin nasıl uygulanacağı hakkında daha fazla bilgi için bkz. Temel Windows PowerShell Sağlayıcısı Oluşturma. Ancak burada açıklanan sağlayıcı da dahil olmak üzere çoğu sağlayıcı, Windows PowerShell tarafından sağlanan bu işlevselliğin varsayılan uygulamasını kullanabilir.
Windows PowerShell öğe sağlayıcısının mağazadaki öğeleri işleyebilmesi için, veri deposuna erişmek üzere System.Management.Automation.Provider.DriveCmdletProvider temel sınıfının yöntemlerini uygulaması gerekir. Bu sınıfın uygulanması hakkında daha fazla bilgi için bkz. Windows PowerShell Sürücü Sağlayıcısı Oluşturma.
Yol geçerliliği kontrol ediliyor
Bir veri öğesi ararken Windows PowerShell çalışma zamanı, Windows PowerShell Nasıl Çalışır bölümünün "PSPath Kavramları" bölümünde tanımlandığı gibi sağlayıcıya bir Windows PowerShell yolu sağlar. Bir Windows PowerShell öğe sağlayıcısı, System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath yöntemini uygulayarak kendisine geçirilen herhangi bir yolun sözdizimsel ve anlamsal geçerliliğini doğrulamalıdır. Bu yöntem, yol geçerliyse true, değilse false değerini döndürür. Bu yöntemin uygulanmasının yoldaki öğenin varlığını doğrulamaması gerektiğini, yalnızca yolun sözdizimsel ve anlamsal olarak doğru olduğunu doğrulaması gerektiğini unutmayın.
Bu sağlayıcı için System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath yönteminin uygulaması burada verilmiştir. Bu uygulamanın, yoldaki tüm ayırıcıları tek tip ayırıcılara dönüştürmek için bir NormalizePath yardımcı yöntemini çağırdığını unutmayın.
protected override bool IsValidPath(string path)
{
bool result = true;
// check if the path is null or empty
if (String.IsNullOrEmpty(path))
{
result = false;
}
// convert all separators in the path to a uniform one
path = NormalizePath(path);
// split the path into individual chunks
string[] pathChunks = path.Split(pathSeparator.ToCharArray());
foreach (string pathChunk in pathChunks)
{
if (pathChunk.Length == 0)
{
result = false;
}
}
return result;
} // IsValidPath
Bir öğenin var olup olmadığını belirleme
Yolu doğruladıktan sonra Windows PowerShell çalışma zamanının o yolda bir veri öğesinin mevcut olup olmadığını belirlemesi gerekir. Bu tür bir sorguyu desteklemek için Windows PowerShell öğe sağlayıcısı System.Management.Automation.Provider.ItemCmdletProvider.ItemExists yöntemini uygular. Bu yöntem, belirtilen yolda bir öğe bulunursa true değerini, aksi takdirde false (varsayılan) değerini döndürür.
Bu sağlayıcı için System.Management.Automation.Provider.ItemCmdletProvider.ItemExists yönteminin uygulaması burada verilmiştir. Bu yöntemin PathIsDrive, ChunkPath ve GetTable yardımcı yöntemlerini çağırdığını ve sağlayıcı tarafından tanımlanan DatabaseTableInfo nesnesini kullandığını unutmayın. .
protected override bool ItemExists(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
return true;
}
// Obtain type, table name and row number from path
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
DatabaseTableInfo table = GetTable(tableName);
if (type == PathType.Table)
{
// if specified path represents a table then DatabaseTableInfo
// object for the same should exist
if (table != null)
{
return true;
}
}
else if (type == PathType.Row)
{
// if specified path represents a row then DatabaseTableInfo should
// exist for the table and then specified row number must be within
// the maximum row count in the table
if (table != null && rowNumber < table.RowCount)
{
return true;
}
}
return false;
} // ItemExists
ItemExists'in uygulanması hakkında hatırlanması gerekenler
System.Management.Automation.Provider.ItemCmdletProvider.ItemExists uygulamanız için aşağıdaki koşullar geçerli olabilir:
- Sağlayıcı sınıfını tanımlarken, bir Windows PowerShell öğe sağlayıcısı
ExpandWildcards,Filter,IncludeveyaExcludesağlayıcı yeteneklerini bildirebilir, System.Management.Automation.Provider.ProviderCapaability numaralandırmasından. Bu durumlarda, System.Management.Automation.Provider.ItemCmdletProvider.ItemExists yönteminin uygulanması, yönteme geçirilen yolun belirtilen yeteneklerin gereksinimlerini karşıladığından emin olmalıdır. Bunu yapmak için yöntemin uygun özelliğe, örneğin System.Management.Automation.Provider.CmdletProvider.Exclude ve System.Management.Automation.Provider.CmdletProvider.Include özelliklerine erişmesi gerekir. - Bu yöntemin uygulanması, öğeyi kullanıcıya görünür hale getirebilecek öğeye her türlü erişim biçimini ele almalıdır. Örneğin, bir kullanıcının FileSystem sağlayıcısı (Windows PowerShell tarafından sağlanır) aracılığıyla bir dosyaya yazma erişimi varsa, ancak okuma erişimi yoksa, dosya hala mevcuttur ve System.Management.Automation.Provider.ItemCmdletProvider.ItemExists true< değerini döndürür. /kod>. Uygulamanız, alt öğenin numaralandırılıp numaralandırılamayacağını görmek için bir üst öğenin kontrol edilmesini gerektirebilir.
Test-Path cmdlet'ine dinamik parametreler ekleme
Bazen System.Management.Automation.Provider.ItemCmdletProvider.ItemExists'i çağıran Test-Path cmdlet'i, çalışma zamanında dinamik olarak belirtilen ek parametreler gerektirir. Bu dinamik parametreleri sağlamak için Windows PowerShell öğe sağlayıcısının System.Management.Automation.Provider.ItemCmdletProvider.ItemExistsDynamicParameters yöntemini uygulaması gerekir. Bu yöntem, belirtilen yoldaki öğenin dinamik parametrelerini alır ve bir cmdlet sınıfına veya System.Management.Automation.RuntimeDefinedParameterDictionary nesnesine benzer ayrıştırma özniteliklerine sahip özelliklere ve alanlara sahip bir nesneyi döndürür. Windows PowerShell çalışma zamanı, parametreleri Test-Path cmdlet'ine eklemek için döndürülen nesneyi kullanır.
Bu Windows PowerShell öğe sağlayıcısı bu yöntemi uygulamaz. Ancak aşağıdaki kod bu yöntemin varsayılan uygulamasıdır.
Bir öğeyi alma
Bir öğeyi almak için Windows PowerShell öğe sağlayıcısının, Get-Item cmdlet'inden gelen çağrıları desteklemek amacıyla System.Management.Automation.Provider.ItemCmdletProvider.GetItem yöntemini geçersiz kılması gerekir. Bu yöntem, öğeyi System.Management.Automation.Provider.CmdletProvider.WriteItemObject yöntemini kullanarak yazar.
Bu sağlayıcı için System.Management.Automation.Provider.ItemCmdletProvider.GetItem yönteminin uygulaması burada verilmiştir. Bu yöntemin, Access veritabanındaki tablolar veya bir veri tablosundaki satırlar olan öğeleri almak için GetTable ve GetRow yardımcı yöntemlerini kullandığını unutmayın.
protected override void GetItem(string path)
{
// check if the path represented is a drive
if (PathIsDrive(path))
{
WriteItemObject(this.PSDriveInfo, path, true);
return;
}// if (PathIsDrive...
// Get table name and row information from the path and do
// necessary actions
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Table)
{
DatabaseTableInfo table = GetTable(tableName);
WriteItemObject(table, path, true);
}
else if (type == PathType.Row)
{
DatabaseRowInfo row = GetRow(tableName, rowNumber);
WriteItemObject(row, path, false);
}
else
{
ThrowTerminatingInvalidPathException(path);
}
} // GetItem
GetItem'in uygulanmasıyla ilgili hatırlanması gerekenler
System.Management.Automation.Provider.ItemCmdletProvider.GetItem uygulaması için aşağıdaki koşullar geçerli olabilir:
Sağlayıcı sınıfını tanımlarken, bir Windows PowerShell öğe sağlayıcısı
ExpandWildcards,Filter,IncludeveyaExcludesağlayıcı yeteneklerini bildirebilir, System.Management.Automation.Provider.ProviderCapaability numaralandırmasından. Bu durumlarda, System.Management.Automation.Provider.ItemCmdletProvider.GetItem uygulaması, yönteme geçirilen yolun bu gereksinimleri karşıladığından emin olmalıdır. Bunu yapmak için yöntemin uygun özelliğe, örneğin System.Management.Automation.Provider.CmdletProvider.Exclude ve System.Management.Automation.Provider.CmdletProvider.Include özelliklerine erişmesi gerekir.Varsayılan olarak, bu yöntemin geçersiz kılınması, System.Management.Automation.Provider.CmdletProvider.Force özelliği
trueolarak ayarlanmadığı sürece genellikle kullanıcıdan gizlenen nesneleri almamalıdır. Örneğin, FileSystem sağlayıcısı için System.Management.Automation.Provider.ItemCmdletProvider.GetItem yöntemi, System.Management.Automation.Provider.CmdletProvider.WriteItemObject'i çağırmayı denemeden önce System.Management.Automation.Provider.CmdletProvider.Force özelliğini denetler. gizli veya sistem dosyaları için.
Get-Item cmdlet'ine dinamik parametreler ekleme
Bazen Get-Item cmdlet'i, çalışma zamanında dinamik olarak belirtilen ek parametreler gerektirir. Bu dinamik parametreleri sağlamak için Windows PowerShell öğe sağlayıcısının System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters yöntemini uygulaması gerekir. Bu yöntem, belirtilen yoldaki öğenin dinamik parametrelerini alır ve bir cmdlet sınıfına veya System.Management.Automation.RuntimeDefinedParameterDictionary nesnesine benzer ayrıştırma özniteliklerine sahip özelliklere ve alanlara sahip bir nesneyi döndürür. Windows PowerShell çalışma zamanı, parametreleri Get-Item cmdlet'ine eklemek için döndürülen nesneyi kullanır.
Bu sağlayıcı bu yöntemi uygulamamaktadır. Ancak aşağıdaki kod bu yöntemin varsayılan uygulamasıdır.
Bir öğeyi ayarlama
Bir öğeyi ayarlamak için Windows PowerShell öğe sağlayıcısının, Set-Item cmdlet'inden gelen çağrıları desteklemek üzere System.Management.Automation.Provider.ItemCmdletProvider.SetItem yöntemini geçersiz kılması gerekir. Bu yöntem, belirtilen yoldaki öğenin değerini ayarlar.
Bu sağlayıcı, System.Management.Automation.Provider.ItemCmdletProvider.SetItem yöntemi için geçersiz kılma sağlamaz. Ancak bu yöntemin varsayılan uygulaması aşağıdadır.
SetItem'in uygulanmasıyla ilgili hatırlanması gerekenler
System.Management.Automation.Provider.ItemCmdletProvider.SetItem uygulamanız için aşağıdaki koşullar geçerli olabilir:
Sağlayıcı sınıfını tanımlarken, bir Windows PowerShell öğe sağlayıcısı
ExpandWildcards,Filter,IncludeveyaExcludesağlayıcı yeteneklerini bildirebilir, System.Management.Automation.Provider.ProviderCapaability numaralandırmasından. Bu durumlarda, System.Management.Automation.Provider.ItemCmdletProvider.SetItem uygulaması, yönteme geçirilen yolun bu gereksinimleri karşıladığından emin olmalıdır. Bunu yapmak için yöntemin uygun özelliğe, örneğin System.Management.Automation.Provider.CmdletProvider.Exclude ve System.Management.Automation.Provider.CmdletProvider.Include özelliklerine erişmesi gerekir.Varsayılan olarak, bu yöntemin geçersiz kılmaları, System.Management.Automation.Provider.CmdletProvider.Force özelliği
trueolarak ayarlanmadığı sürece kullanıcıdan gizlenen nesneleri ayarlamamalı veya yazmamalıdır. Yol gizli bir öğeyi temsil ediyorsa ve System.Management.Automation.Provider.CmdletProvider.Forcefalseolarak ayarlanmışsa System.Management.Automation.Provider.CmdletProvider.WriteError yöntemine bir hata gönderilmelidir.System.Management.Automation.Provider.ItemCmdletProvider.SetItem yöntemi uygulamanız, System.Management.Automation.Provider.CmdletProvider.ShouldProcess'i çağırmalı ve veri deposunda herhangi bir değişiklik yapmadan önce dönüş değerini doğrulamalıdır. Bu yöntem, veri deposunda bir değişiklik yapıldığında (örneğin dosyaların silinmesi) bir işlemin yürütülmesini onaylamak için kullanılır. System.Management.Automation.Provider.CmdletProvider.ShouldProcess yöntemi, Windows PowerShell çalışma zamanının nelerin görüntülenmesi gerektiğini belirlerken tüm komut satırı ayarlarını veya tercih değişkenlerini hesaba katmasıyla, değiştirilecek kaynağın adını kullanıcıya gönderir.
System.Management.Automation.Provider.CmdletProvider.ShouldProcess çağrısı
truedeğerini döndürdükten sonra, System.Management.Automation.Provider.ItemCmdletProvider.SetItem yönteminin System.Management.Automation.Provider.CmdletProvider öğesini çağırması gerekir. .ShouldContinue yöntemi. Bu yöntem kullanıcıya, işlemin devam ettirilmesi gerekip gerekmediğini doğrulamak için geri bildirime izin veren bir mesaj gönderir. System.Management.Automation.Provider.CmdletProvider.ShouldContinue çağrısı, potansiyel olarak tehlikeli sistem değişiklikleri için ek bir denetim yapılmasına olanak tanır.
SetItem için dinamik parametrelerin alınması
Bazen Set-Item cmdlet'i, çalışma zamanında dinamik olarak belirtilen ek parametreler gerektirir. Bu dinamik parametreleri sağlamak için Windows PowerShell öğe sağlayıcısının System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters yöntemini uygulaması gerekir. Bu yöntem, belirtilen yoldaki öğenin dinamik parametrelerini alır ve bir cmdlet sınıfına veya System.Management.Automation.RuntimeDefinedParameterDictionary nesnesine benzer ayrıştırma özniteliklerine sahip özelliklere ve alanlara sahip bir nesneyi döndürür. Windows PowerShell çalışma zamanı, parametreleri Set-Item cmdlet'ine eklemek için döndürülen nesneyi kullanır.
Bu sağlayıcı bu yöntemi uygulamamaktadır. Ancak aşağıdaki kod bu yöntemin varsayılan uygulamasıdır.
Bir öğeyi temizleme
Bir öğeyi temizlemek için Windows PowerShell öğe sağlayıcısı, Clear-Item cmdlet'inden gelen çağrıları desteklemek amacıyla System.Management.Automation.Provider.ItemCmdletProvider.ClearItem yöntemini uygular. Bu yöntem, belirtilen yoldaki veri öğesini siler.
Bu sağlayıcı bu yöntemi uygulamamaktadır. Ancak aşağıdaki kod bu yöntemin varsayılan uygulamasıdır.
ClearItem'in uygulanmasıyla ilgili hatırlanması gerekenler
System.Management.Automation.Provider.ItemCmdletProvider.ClearItem uygulaması için aşağıdaki koşullar geçerli olabilir:
Sağlayıcı sınıfını tanımlarken, bir Windows PowerShell öğe sağlayıcısı
ExpandWildcards,Filter,IncludeveyaExcludesağlayıcı yeteneklerini bildirebilir, System.Management.Automation.Provider.ProviderCapaability numaralandırmasından. Bu durumlarda, System.Management.Automation.Provider.ItemCmdletProvider.ClearItem uygulaması, yönteme geçirilen yolun bu gereksinimleri karşıladığından emin olmalıdır. Bunu yapmak için yöntemin uygun özelliğe, örneğin System.Management.Automation.Provider.CmdletProvider.Exclude ve System.Management.Automation.Provider.CmdletProvider.Include özelliklerine erişmesi gerekir.Varsayılan olarak, bu yöntemin geçersiz kılmaları, System.Management.Automation.Provider.CmdletProvider.Force özelliği
trueolarak ayarlanmadığı sürece kullanıcıdan gizlenen nesneleri ayarlamamalı veya yazmamalıdır. Yol, kullanıcıdan gizlenen bir öğeyi temsil ediyorsa ve System.Management.Automation.Provider.CmdletProvider.Forcefalse olarak ayarlanmışsa, System.Management.Automation.Provider.CmdletProvider.WriteError yöntemine bir hata gönderilmelidir..System.Management.Automation.Provider.ItemCmdletProvider.SetItem yöntemi uygulamanız, System.Management.Automation.Provider.CmdletProvider.ShouldProcess'i çağırmalı ve veri deposunda herhangi bir değişiklik yapmadan önce dönüş değerini doğrulamalıdır. Bu yöntem, veri deposunda bir değişiklik yapıldığında (örneğin dosyaların silinmesi) bir işlemin yürütülmesini onaylamak için kullanılır. System.Management.Automation.Provider.CmdletProvider.ShouldProcess yöntemi, Windows PowerShell çalışma zamanı ile değiştirilecek kaynağın adını kullanıcıya gönderir ve nelerin görüntülenmesi gerektiğini belirlemede tüm komut satırı ayarlarını veya tercih değişkenlerini işler.
System.Management.Automation.Provider.CmdletProvider.ShouldProcess çağrısı
truedeğerini döndürdükten sonra, System.Management.Automation.Provider.ItemCmdletProvider.SetItem yönteminin System.Management.Automation.Provider.CmdletProvider öğesini çağırması gerekir. .ShouldContinue yöntemi. Bu yöntem kullanıcıya, işlemin devam ettirilmesi gerekip gerekmediğini doğrulamak için geri bildirime izin veren bir mesaj gönderir. System.Management.Automation.Provider.CmdletProvider.ShouldContinue çağrısı, potansiyel olarak tehlikeli sistem değişiklikleri için ek bir denetim yapılmasına olanak tanır.
ClearItem için dinamik parametreleri alın
Bazen Clear-Item cmdlet'i, çalışma zamanında dinamik olarak belirtilen ek parametreler gerektirir. Bu dinamik parametreleri sağlamak için Windows PowerShell öğe sağlayıcısının System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters yöntemini uygulaması gerekir. Bu yöntem, belirtilen yoldaki öğenin dinamik parametrelerini alır ve cmdlet sınıfına veya System.Management.Automation.RuntimeDefinedParameterDictionary nesnesine benzer ayrıştırma özniteliklerine sahip özelliklere ve alanlara sahip bir nesneyi döndürür. Windows PowerShell çalışma zamanı, parametreleri Clear-Item cmdlet'ine eklemek için döndürülen nesneyi kullanır.
Bu öğe sağlayıcı bu yöntemi uygulamamaktadır. Ancak aşağıdaki kod bu yöntemin varsayılan uygulamasıdır.
Bir öğe için varsayılan bir eylem gerçekleştirme
Bir Windows PowerShell öğe sağlayıcısı, Invoke-Item cmdlet'inden yapılan çağrıları desteklemek için System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction yöntemini uygulayabilir; bu, sağlayıcının şu öğe için varsayılan bir eylem gerçekleştirmesine olanak tanır: belirtilen yol. Örneğin, FileSystem sağlayıcısı belirli bir öğe için ShellExecute'u çağırmak için bu yöntemi kullanabilir.
Bu sağlayıcı bu yöntemi uygulamamaktadır. Ancak aşağıdaki kod bu yöntemin varsayılan uygulamasıdır.
InvokeDefaultAction'ın uygulanmasıyla ilgili hatırlanması gerekenler
System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction uygulaması için aşağıdaki koşullar geçerli olabilir:
Sağlayıcı sınıfını tanımlarken, bir Windows PowerShell öğe sağlayıcısı
ExpandWildcards,Filter,IncludeveyaExcludesağlayıcı yeteneklerini bildirebilir, System.Management.Automation.Provider.ProviderCapaability numaralandırmasından. Bu durumlarda, System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction uygulaması, yönteme geçirilen yolun bu gereksinimleri karşıladığından emin olmalıdır. Bunu yapmak için yöntemin uygun özelliğe, örneğin System.Management.Automation.Provider.CmdletProvider.Exclude ve System.Management.Automation.Provider.CmdletProvider.Include özelliklerine erişmesi gerekir.Varsayılan olarak, bu yöntemin geçersiz kılmaları, System.Management.Automation.Provider.CmdletProvider.Force özelliği
trueolarak ayarlanmadığı sürece kullanıcıdan gizlenen nesneleri ayarlamamalı veya yazmamalıdır. Yol, kullanıcıdan gizlenen bir öğeyi temsil ediyorsa ve System.Management.Automation.Provider.CmdletProvider.Forcefalse olarak ayarlanmışsa, System.Management.Automation.Provider.CmdletProvider.WriteError yöntemine bir hata gönderilmelidir..
InvokeDefaultAction için dinamik parametreleri alın
Bazen Invoke-Item cmdlet'i, çalışma zamanında dinamik olarak belirtilen ek parametreler gerektirir. Bu dinamik parametreleri sağlamak için Windows PowerShell öğe sağlayıcısının System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters yöntemini uygulaması gerekir. Bu yöntem, belirtilen yoldaki öğenin dinamik parametrelerini alır ve cmdlet sınıfına veya System.Management.Automation.RuntimeDefinedParameterDictionary nesnesine benzer ayrıştırma özniteliklerine sahip özelliklere ve alanlara sahip bir nesneyi döndürür. Windows PowerShell çalışma zamanı, dinamik parametreleri Invoke-Item cmdlet'ine eklemek için döndürülen nesneyi kullanır.
Bu öğe sağlayıcı bu yöntemi uygulamamaktadır. Ancak aşağıdaki kod bu yöntemin varsayılan uygulamasıdır.
Yardımcı yöntemleri ve sınıfları uygulama
Bu öğe sağlayıcı, Windows PowerShell tarafından tanımlanan genel geçersiz kılma yöntemleri tarafından kullanılan çeşitli yardımcı yöntemleri ve sınıfları uygular. Bu yardımcı yöntemlerin ve sınıfların kodu Kod Örneği bölümünde gösterilmiştir.
NormalizePath yöntemi
Bu öğe sağlayıcı, yolun tutarlı bir biçime sahip olmasını sağlamak için bir NormalizePath yardımcı yöntemini uygular. Belirtilen format ayırıcı olarak ters eğik çizgi (\) kullanır.
PathIsDrive yöntemi
Bu öğe sağlayıcı, belirtilen yolun gerçekten sürücü adı olup olmadığını belirlemek için bir PathIsDrive yardımcı yöntemini uygular.
ChunkPath yöntemi
Bu öğe sağlayıcı, sağlayıcının tek tek öğelerini tanımlayabilmesi için belirtilen yolu bölen bir ChunkPath yardımcı yöntemini uygular. Yol öğelerinden oluşan bir dizi döndürür.
GetTable yöntemi
Bu öğe sağlayıcı, çağrıda belirtilen tabloyla ilgili bilgileri temsil eden bir DatabaseTableInfo nesnesi döndüren GetTables yardımcı yöntemini uygular.
GetRow yöntemi
Bu öğe sağlayıcının System.Management.Automation.Provider.ItemCmdletProvider.GetItem yöntemi GetRows yardımcı yöntemini çağırır. Bu yardımcı yöntem, tabloda belirtilen satırla ilgili bilgileri temsil eden bir DatabaseRowInfo nesnesini alır.
DatabaseTableInfo sınıfı
Bu öğe sağlayıcı, veritabanındaki bir veri tablosundaki bilgi koleksiyonunu temsil eden bir DatabaseTableInfo sınıfını tanımlar. Bu sınıf System.IO.Directoryinfo sınıfına benzer.
Örnek öğe sağlayıcısı, veritabanındaki tabloları tanımlayan tablo bilgisi nesnelerinin bir koleksiyonunu döndüren bir DatabaseTableInfo.GetTables yöntemini tanımlar. Bu yöntem, herhangi bir veritabanı hatasının sıfır girişli bir satır olarak görünmesini sağlamak için bir try/catch bloğu içerir.
DatabaseRowInfo sınıfı
Bu öğe sağlayıcı, veritabanı tablosundaki bir satırı temsil eden DatabaseRowInfo yardımcı sınıfını tanımlar. Bu sınıf System.IO.FileInfo sınıfına benzer.
Örnek sağlayıcı, belirtilen tabloya ilişkin satır bilgisi nesnelerinin bir koleksiyonunu döndürmek için bir DatabaseRowInfo.GetRows yöntemini tanımlar. Bu yöntem, istisnaları yakalamak için bir try/catch bloğu içerir. Herhangi bir hata satır bilgisinin olmamasına neden olur.
Kod örneği
Örnek kodun tamamı için bkz. AccessDbProviderSample03 Kod Örneği.
Nesne türlerini ve biçimlendirmeyi tanımlama
Sağlayıcı yazarken mevcut nesnelere üye eklemek veya yeni nesneler tanımlamak gerekebilir. İşiniz bittiğinde, Windows PowerShell'in nesnenin üyelerini tanımlamak için kullanabileceği bir Türler dosyası ve nesnenin nasıl görüntüleneceğini tanımlayan bir Biçim dosyası oluşturun. Daha fazla bilgi için bkz. Nesne Türlerini Genişletme ve Biçimlendirme.
Windows PowerShell sağlayıcısını oluşturma
Bkz. Cmdlet'leri, Sağlayıcıları ve Ana Bilgisayar Uygulamalarını Kaydetme.
Windows PowerShell sağlayıcısını test etme
Bu Windows PowerShell öğe sağlayıcısı Windows PowerShell'e kaydedildiğinde, sağlayıcının yalnızca temel ve sürücü işlevlerini test edebilirsiniz. Öğelerin işlenmesini test etmek için, Kapsayıcı Windows PowerShell Sağlayıcısını Uygulamabölümünde açıklanan kapsayıcı işlevselliğini de uygulamanız gerekir.
Ayrıca bakınız
- Windows PowerShell SDK'sı
- Windows PowerShell Programcı Kılavuzu
- Windows PowerShell Sağlayıcıları Oluşturma
- Windows PowerShell sağlayıcınızı tasarlama
- Nesne Türlerini ve Biçimlendirmeyi Genişletme
- Windows PowerShell Nasıl Çalışır?
- Container Windows PowerShell sağlayıcısı oluşturma
- Drive Windows PowerShell sağlayıcısı oluşturma
- Cmdlet'leri, Sağlayıcıları ve Ana Bilgisayar Uygulamalarını Kaydetme