Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konuda, kullanıcının veri deposundaki öğelerin içeriğini işlemesine olanak tanıyan bir Windows PowerShell sağlayıcısının nasıl oluşturulacağı açıklanmaktadır. Sonuç olarak, öğelerin içeriğini işleyebilen bir sağlayıcı, Windows PowerShell içerik sağlayıcısı olarak adlandırılır.
Uyarı
Windows Vista ve .NET Framework 3.0 Çalışma Zamanı Bileşenleri için Microsoft Windows Yazılım Geliştirme Seti'ni kullanarak bu sağlayıcı için C# kaynak dosyasını (AccessDBSampleProvider06.cs) indirebilirsiniz. İndirme yönergeleri için bkz. Windows PowerShell'i Yükleme ve Windows PowerShell SDK'sını indirme . İndirilen kaynak dosyaları <PowerShell Örnekleri> dizininde bulunur. Diğer Windows PowerShell sağlayıcı uygulamaları hakkında daha fazla bilgi için bkz. Windows PowerShell Sağlayıcınızı Tasarlama.
Windows PowerShell İçerik Sağlayıcısı Sınıfını Tanımlama
Windows PowerShell içerik sağlayıcısı, System.Management.Automation.Provider.IContentCmdletProvider arabirimini destekleyen bir .NET sınıfı oluşturmalıdır. Bu bölümde açıklanan öğe sağlayıcısının sınıf tanımı aşağıdadır.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : NavigationCmdletProvider, IContentCmdletProvider
Bu sınıf tanımında, System.Management.Automation.Provider.CmdletProviderAttribute özniteliğinin iki parametre içerdiğini unutmayın. İlk parametre, Windows PowerShell tarafından kullanılan sağlayıcı için kullanıcı dostu 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ü özellikleri belirtir. Bu sağlayıcı için Windows PowerShell'e özgü ek özellikler yoktur.
Temel Sınıfın İşlevselliğini Tanımlama
Windows PowerShell Sağlayıcınızı Tasarlamabölümünde açıklandığı gibi, System.Management.Automation.Provider.NavigationCmdletProvider sınıfı, farklı sağlayıcı işlevselliği sağlayan diğer birkaç sınıftan türetilir. Bu nedenle bir Windows PowerShell içerik sağlayıcısı genellikle bu sınıflar tarafından sağlanan tüm işlevleri tanımlar.
Oturuma özgü başlatma bilgileri eklemeye ve sağlayıcı tarafından kullanılan kaynakları yayınlamaya yönelik işlevselliği uygulama 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.
Veri deposuna erişmek için sağlayıcının System.Management.Automation.Provider.DriveCmdletProvider temel sınıfının yöntemlerini uygulaması gerekir. Bu yöntemleri uygulama hakkında daha fazla bilgi için bkz. Windows PowerShell Sürücü Sağlayıcısı Oluşturma.
Bir veri deposunun öğelerini almak, ayarlamak ve temizlemek gibi öğeleri işlemek için sağlayıcının System.Management.Automation.Provider.ItemCmdletProvider temel sınıfı tarafından sağlanan yöntemleri uygulaması gerekir. Bu yöntemleri uygulama hakkında daha fazla bilgi için bkz. Windows PowerShell Öğe Sağlayıcısı Oluşturma.
Çok katmanlı veri depolarında çalışmak için sağlayıcının System.Management.Automation.Provider.ContainerCmdletProvider temel sınıfı tarafından sağlanan yöntemleri uygulaması gerekir. Bu yöntemleri uygulama hakkında daha fazla bilgi için bkz. Windows PowerShell Kapsayıcı Sağlayıcısı Oluşturma.
Özyinelemeli komutları, iç içe kapsayıcıları ve göreli yolları desteklemek için sağlayıcının System.Management.Automation.Provider.NavigationCmdletProvider temel sınıfını uygulaması gerekir. Ayrıca, bu Windows PowerShell içerik sağlayıcısı System.Management.Automation.Provider.IContentCmdletProvider arabirimini System.Management.Automation.Provider.NavigationCmdletProvider temel sınıfına ekleyebilir ve bu nedenle bu sınıf tarafından sağlanan yöntemleri uygulaması gerekir. Daha fazla bilgi için bkz. Bu yöntemleri uygulama, bkz. Gezinti Windows PowerShell Sağlayıcısı uygulama.
İçerik Okuyucu uygulama
Bir öğeden içerik okumak için, sağlayıcının System.Management.Automation.Provider.IContentReadertüretilen bir içerik okuyucu sınıfı uygulaması gerekir. Bu sağlayıcının içerik okuyucusu, veri tablosundaki bir satırın içeriğine erişim sağlar. İçerik okuyucu sınıfı, belirtilen satırdan verileri alan ve bu verileri temsil eden bir liste, içerik okuyucuyu taşıyan bir Seek yöntemi, içerik okuyucuyu kapatan bir Kapat yöntemi ve Dispose yöntemi döndüren bir Okuma yöntemi tanımlar.
public class AccessDBContentReader : IContentReader
{
// A provider instance is required so as to get "content"
private AccessDBProvider provider;
private string path;
private long currentOffset;
internal AccessDBContentReader(string path, AccessDBProvider provider)
{
this.path = path;
this.provider = provider;
}
/// <summary>
/// Read the specified number of rows from the source.
/// </summary>
/// <param name="readCount">The number of items to
/// return.</param>
/// <returns>An array of elements read.</returns>
public IList Read(long readCount)
{
// Read the number of rows specified by readCount and increment
// offset
string tableName;
int rowNumber;
PathType type = provider.GetNamesFromPath(path, out tableName, out rowNumber);
Collection<DatabaseRowInfo> rows =
provider.GetRows(tableName);
Collection<DataRow> results = new Collection<DataRow>();
if (currentOffset < 0 || currentOffset >= rows.Count)
{
return null;
}
int rowsRead = 0;
while (rowsRead < readCount && currentOffset < rows.Count)
{
results.Add(rows[(int)currentOffset].Data);
rowsRead++;
currentOffset++;
}
return results;
} // Read
/// <summary>
/// Moves the content reader specified number of rows from the
/// origin
/// </summary>
/// <param name="offset">Number of rows to offset</param>
/// <param name="origin">Starting row from which to offset</param>
public void Seek(long offset, System.IO.SeekOrigin origin)
{
// get the number of rows in the table which will help in
// calculating current position
string tableName;
int rowNumber;
PathType type = provider.GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Invalid)
{
throw new ArgumentException("Path specified must represent a table or a row :" + path);
}
if (type == PathType.Table)
{
Collection<DatabaseRowInfo> rows = provider.GetRows(tableName);
int numRows = rows.Count;
if (offset > rows.Count)
{
throw new
ArgumentException(
"Offset cannot be greater than the number of rows available"
);
}
if (origin == System.IO.SeekOrigin.Begin)
{
// starting from Beginning with an index 0, the current offset
// has to be advanced to offset - 1
currentOffset = offset - 1;
}
else if (origin == System.IO.SeekOrigin.End)
{
// starting from the end which is numRows - 1, the current
// offset is so much less than numRows - 1
currentOffset = numRows - 1 - offset;
}
else
{
// calculate from the previous value of current offset
// advancing forward always
currentOffset += offset;
}
} // if (type...
else
{
// for row, the offset will always be set to 0
currentOffset = 0;
}
} // Seek
/// <summary>
/// Closes the content reader, so all members are reset
/// </summary>
public void Close()
{
Dispose();
} // Close
/// <summary>
/// Dispose any resources being used
/// </summary>
public void Dispose()
{
Seek(0, System.IO.SeekOrigin.Begin);
GC.SuppressFinalize(this);
} // Dispose
} // AccessDBContentReader
İçerik Yazıcı Uygulama
Bir öğeye içerik yazmak için sağlayıcının System.Management.Automation.Provider.IContentWritertüretilen bir içerik yazıcı sınıfı uygulaması gerekir. İçerik yazıcı sınıfı, belirtilen satır içeriğini yazan bir Write yöntemi, içerik yazıcısını taşıyan bir Seek yöntemi, içerik yazıcıyı kapatan bir Kapat yöntemi ve Dispose yöntemini tanımlar.
public class AccessDBContentWriter : IContentWriter
{
// A provider instance is required so as to get "content"
private AccessDBProvider provider;
private string path;
private long currentOffset;
internal AccessDBContentWriter(string path, AccessDBProvider provider)
{
this.path = path;
this.provider = provider;
}
/// <summary>
/// Write the specified row contents in the source
/// </summary>
/// <param name="content"> The contents to be written to the source.
/// </param>
/// <returns>An array of elements which were successfully written to
/// the source</returns>
///
public IList Write(IList content)
{
if (content == null)
{
return null;
}
// Get the total number of rows currently available it will
// determine how much to overwrite and how much to append at
// the end
string tableName;
int rowNumber;
PathType type = provider.GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Table)
{
OdbcDataAdapter da = provider.GetAdapterForTable(tableName);
if (da == null)
{
return null;
}
DataSet ds = provider.GetDataSetForTable(da, tableName);
DataTable table = provider.GetDataTable(ds, tableName);
string[] colValues = (content[0] as string).Split(',');
// set the specified row
DataRow row = table.NewRow();
for (int i = 0; i < colValues.Length; i++)
{
if (!String.IsNullOrEmpty(colValues[i]))
{
row[i] = colValues[i];
}
}
//table.Rows.InsertAt(row, rowNumber);
// Update the table
table.Rows.Add(row);
da.Update(ds, tableName);
}
else
{
throw new InvalidOperationException("Operation not supported. Content can be added only for tables");
}
return null;
} // Write
/// <summary>
/// Moves the content reader specified number of rows from the
/// origin
/// </summary>
/// <param name="offset">Number of rows to offset</param>
/// <param name="origin">Starting row from which to offset</param>
public void Seek(long offset, System.IO.SeekOrigin origin)
{
// get the number of rows in the table which will help in
// calculating current position
string tableName;
int rowNumber;
PathType type = provider.GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Invalid)
{
throw new ArgumentException("Path specified should represent either a table or a row : " + path);
}
Collection<DatabaseRowInfo> rows =
provider.GetRows(tableName);
int numRows = rows.Count;
if (offset > rows.Count)
{
throw new
ArgumentException(
"Offset cannot be greater than the number of rows available"
);
}
if (origin == System.IO.SeekOrigin.Begin)
{
// starting from Beginning with an index 0, the current offset
// has to be advanced to offset - 1
currentOffset = offset - 1;
}
else if (origin == System.IO.SeekOrigin.End)
{
// starting from the end which is numRows - 1, the current
// offset is so much less than numRows - 1
currentOffset = numRows - 1 - offset;
}
else
{
// calculate from the previous value of current offset
// advancing forward always
currentOffset += offset;
}
} // Seek
/// <summary>
/// Closes the content reader, so all members are reset
/// </summary>
public void Close()
{
Dispose();
} // Close
/// <summary>
/// Dispose any resources being used
/// </summary>
public void Dispose()
{
Seek(0, System.IO.SeekOrigin.Begin);
GC.SuppressFinalize(this);
} // Dispose
} // AccessDBContentWriter
İçerik Okuyucusu'nı alma
Bir öğeden içerik almak için sağlayıcının Get-Content cmdlet'ini desteklemek için System.Management.Automation.Provider.IContentCmdletProvider.GetContentReader* uygulaması gerekir. Bu yöntem, belirtilen yolda bulunan öğenin içerik okuyucusunu döndürür. Okuyucu nesnesi daha sonra içeriği okumak için açılabilir.
Bu sağlayıcı için bu yöntem için System.Management.Automation.Provider.IContentCmdletProvider.GetContentReader* uygulaması aşağıdadır.
public IContentReader GetContentReader(string path)
{
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Invalid)
{
ThrowTerminatingInvalidPathException(path);
}
else if (type == PathType.Row)
{
throw new InvalidOperationException("contents can be obtained only for tables");
}
return new AccessDBContentReader(path, this);
} // GetContentReader
public IContentReader GetContentReader(string path)
{
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Invalid)
{
ThrowTerminatingInvalidPathException(path);
}
else if (type == PathType.Row)
{
throw new InvalidOperationException("contents can be obtained only for tables");
}
return new AccessDBContentReader(path, this);
} // GetContentReader
GetContentReader Uygulama Hakkında Anımsanacak Şeyler
Aşağıdaki koşullar, System.Management.Automation.Provider.IContentCmdletProvider.GetContentReader* uygulaması için geçerli olabilir:
Sağlayıcı sınıfını tanımlarken, Windows PowerShell içerik sağlayıcısı System.Management.Automation.Provider.ProviderCapabilities numaralandırmasından ExpandWildcards, Filter, Include veya Exclude sağlayıcı özelliklerini bildirebilir. Bu durumlarda, System.Management.Automation.Provider.IContentCmdletProvider.GetContentReader* yönteminin uygulanması, yönteme geçirilen yolun belirtilen özelliklerin gereksinimlerini karşıladığından emin olmalıdır. Bunu yapmak için, yöntemin uygun özelliğe erişmesi gerekir; örneğin, System.Management.Automation.Provider.CmdletProvider.Exclude* ve System.Management.Automation.Provider.CmdletProvider.Include* özellikleri.
Varsayılan olarak, System.Management.Automation.Provider.CmdletProvider.Force* özelliği
trueolarak ayarlanmadığı sürece, bu yöntemin geçersiz kılmaları kullanıcıdan gizlenen nesneler için okuyucu almamalıdır. Yol kullanıcıdan gizlenen bir öğeyi temsil ederse ve System.Management.Automation.Provider.CmdletProvider.Force*falseolarak ayarlandıysa bir hata yazılmalıdır.
Get-Content Cmdlet'ine Dinamik Parametreler Ekleme
Get-Content cmdlet'i çalışma zamanında dinamik olarak belirtilen ek parametreler gerektirebilir. Bu dinamik parametreleri sağlamak için Windows PowerShell içerik sağlayıcısının system.management.automation.provider.IContentCmdletProvider.GetContentReaderdynamicparameters* yöntemini uygulaması gerekir. Bu yöntem, belirtilen yolda öğ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 nesne döndürür. Windows PowerShell çalışma zamanı, cmdlet'ine parametreleri eklemek için döndürülen nesneyi kullanır.
Bu Windows PowerShell kapsayıcı sağlayıcısı bu yöntemi uygulamaz. Ancak aşağıdaki kod, bu yöntemin varsayılan uygulamasıdır.
public object GetContentReaderDynamicParameters(string path)
{
return null;
}
public object GetContentReaderDynamicParameters(string path)
{
return null;
}
İçerik Yazıcısını Alma
Bir öğeye içerik yazmak için sağlayıcının Set-Content ve Add-Content cmdlet'lerini desteklemek için System.Management.Automation.Provider.IContentCmdletProvider.GetContentWriter* uygulaması gerekir. Bu yöntem, belirtilen yolda bulunan öğenin içerik yazıcısını döndürür.
Bu yöntem için System.Management.Automation.Provider.IContentCmdletProvider.GetContentWriter* uygulaması aşağıdadır.
public IContentWriter GetContentWriter(string path)
{
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Invalid)
{
ThrowTerminatingInvalidPathException(path);
}
else if (type == PathType.Row)
{
throw new InvalidOperationException("contents can be added only to tables");
}
return new AccessDBContentWriter(path, this);
}
public IContentWriter GetContentWriter(string path)
{
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type == PathType.Invalid)
{
ThrowTerminatingInvalidPathException(path);
}
else if (type == PathType.Row)
{
throw new InvalidOperationException("contents can be added only to tables");
}
return new AccessDBContentWriter(path, this);
}
GetContentWriter Uygulama Hakkında Anımsanacak Şeyler
Aşağıdaki koşullar, System.Management.Automation.Provider.IContentCmdletProvider.GetContentWriter*uygulamanız için geçerli olabilir:
Sağlayıcı sınıfını tanımlarken, Windows PowerShell içerik sağlayıcısı System.Management.Automation.Provider.ProviderCapabilities numaralandırmasından ExpandWildcards, Filter, Include veya Exclude sağlayıcı özelliklerini bildirebilir. Bu gibi durumlarda, System.Management.Automation.Provider.IContentCmdletProvider.GetContentWriter* yönteminin uygulanması, yönteme geçirilen yolun belirtilen özelliklerin gereksinimlerini karşıladığından emin olmalıdır. Bunu yapmak için, yöntemin uygun özelliğe erişmesi gerekir; örneğin, System.Management.Automation.Provider.CmdletProvider.Exclude* ve System.Management.Automation.Provider.CmdletProvider.Include* özellikleri.
Varsayılan olarak, System.Management.Automation.Provider.CmdletProvider.Force* özelliği
trueolarak ayarlanmadığı sürece, bu yöntemin geçersiz kılmaları kullanıcıdan gizlenen nesneler için yazıcı almamalıdır. Yol kullanıcıdan gizlenen bir öğeyi temsil ederse ve System.Management.Automation.Provider.CmdletProvider.Force*falseolarak ayarlandıysa bir hata yazılmalıdır.
Add-Content ve Set-Content Cmdlet'lerine Dinamik Parametreler Ekleme
Add-Content ve Set-Content cmdlet'leri, çalışma zamanı eklenmiş ek dinamik parametreler gerektirebilir. Bu dinamik parametreleri sağlamak için Windows PowerShell içerik sağlayıcısının bu parametreleri işlemek için System.Management.Automation.Provider.IContentCmdletProvider.GetContentWriterDynamicParameters* yöntemini uygulaması gerekir. Bu yöntem, belirtilen yolda öğ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 nesne döndürür. Windows PowerShell çalışma zamanı, cmdlet'lere parametreleri eklemek için döndürülen nesneyi kullanır.
Bu Windows PowerShell kapsayıcı sağlayıcısı bu yöntemi uygulamaz. Ancak aşağıdaki kod, bu yöntemin varsayılan uygulamasıdır.
public object GetContentWriterDynamicParameters(string path)
{
return null;
}
İçeriği Temizleme
İçerik sağlayıcınız, Clear-Content cmdlet'ini desteklemek için System.Management.Automation.Provider.IContentCmdletProvider.ClearContent* yöntemini uygular. Bu yöntem, belirtilen yolda öğenin içeriğini kaldırır, ancak öğeyi olduğu gibi bırakır.
Bu sağlayıcı için System.Management.Automation.Provider.IContentCmdletProvider.ClearContent* yönteminin uygulaması aşağıdadır.
public void ClearContent(string path)
{
string tableName;
int rowNumber;
PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
if (type != PathType.Table)
{
WriteError(new ErrorRecord(
new InvalidOperationException("Operation not supported. Content can be cleared only for table"),
"NotValidRow", ErrorCategory.InvalidArgument,
path));
return;
}
OdbcDataAdapter da = GetAdapterForTable(tableName);
if (da == null)
{
return;
}
DataSet ds = GetDataSetForTable(da, tableName);
DataTable table = GetDataTable(ds, tableName);
// Clear contents at the specified location
for (int i = 0; i < table.Rows.Count; i++)
{
table.Rows[i].Delete();
}
if (ShouldProcess(path, "ClearContent"))
{
da.Update(ds, tableName);
}
} // ClearContent
ClearContent Uygulama Hakkında Anımsanacak Şeyler
Aşağıdaki koşullar, System.Management.Automation.Provider.IContentCmdletProvider.ClearContent*uygulaması için geçerli olabilir:
Sağlayıcı sınıfını tanımlarken, Windows PowerShell içerik sağlayıcısı System.Management.Automation.Provider.ProviderCapabilities numaralandırmasından ExpandWildcards, Filter, Include veya Exclude sağlayıcı özelliklerini bildirebilir. Bu gibi durumlarda, System.Management.Automation.Provider.IContentCmdletProvider.ClearContent* yönteminin uygulanması, yönteme geçirilen yolun belirtilen özelliklerin gereksinimlerini karşıladığından emin olmalıdır. Bunu yapmak için, yöntemin uygun özelliğe erişmesi gerekir; örneğin, System.Management.Automation.Provider.CmdletProvider.Exclude* ve System.Management.Automation.Provider.CmdletProvider.Include* özellikleri.
Varsayılan olarak, System.Management.Automation.Provider.CmdletProvider.Force* özelliği
trueolarak ayarlanmadığı sürece bu yöntemin geçersiz kılmaları kullanıcıdan gizlenen nesnelerin içeriğini temizlememelidir. Yol kullanıcıdan gizlenen bir öğeyi temsil ederse ve System.Management.Automation.Provider.CmdletProvider.Force*falseolarak ayarlandıysa bir hata yazılmalıdır.System.Management.Automation.Provider.IContentCmdletProvider.ClearContent* yöntemi uygulamanız, System.Management.Automation.Provider.CmdletProvider.ShouldProcess ç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 içerik temizleme gibi bir değişiklik yapıldığında işlemin yürütülmesini onaylamak için kullanılır. System.Management.Automation.Provider.CmdletProvider.ShouldProcess yöntemi, değiştirilecek kaynağın adını kullanıcıya gönderir ve Windows PowerShell çalışma zamanı, nelerin görüntüleneceğini belirlerken komut satırı ayarlarını veya tercih değişkenlerini işler.
System.Management.Automation.Provider.CmdletProvider.ShouldProcess çağrısı
truedöndürdükten sonra, System.Management.Automation.Provider.IContentCmdletProvider.ClearContent* yöntemi System.Management.Automation.Provider.CmdletProvider.ShouldContinue yöntemini çağırmalıdır. Bu yöntem, işleme devam edilmesi gerekip gerekmediğini doğrulamak için geri bildirime izin vermek için kullanıcıya bir ileti gönderir. System.Management.Automation.Provider.CmdletProvider.ShouldContinue çağrısı, tehlikeli olabilecek sistem değişiklikleri için ek denetim sağlar.
Clear-Content Cmdlet'ine Dinamik Parametreler Ekleme
Clear-Content cmdlet'i çalışma zamanında eklenen ek dinamik parametreler gerektirebilir. Bu dinamik parametreleri sağlamak için, Windows PowerShell içerik sağlayıcısının bu parametreleri işlemek için System.Management.Automation.Provider.IContentCmdletProvider.ClearContentDynamicParameters* yöntemini uygulaması gerekir. Bu yöntem, belirtilen yolda öğenin parametrelerini alır. Bu yöntem, belirtilen yolda öğ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 nesne döndürür. Windows PowerShell çalışma zamanı, cmdlet'ine parametreleri eklemek için döndürülen nesneyi kullanır.
Bu Windows PowerShell kapsayıcı sağlayıcısı bu yöntemi uygulamaz. Ancak aşağıdaki kod, bu yöntemin varsayılan uygulamasıdır.
public object ClearContentDynamicParameters(string path)
{
return null;
}
public object ClearContentDynamicParameters(string path)
{
return null;
}
Kod Örneği
Tam örnek kod için bkz. AccessDbProviderSample06 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. Bu işlem tamamlandığında, 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şturmanız gerekir. Daha fazla bilgi için bkz. Genişletme Nesne Türleri ve Biçimlendirme.
Windows PowerShell Sağlayıcısı oluşturma
bkz. cmdlet'leri, sağlayıcıları ve konak uygulamalarını kaydetme.
Windows PowerShell Sağlayıcısını Test Etme
Windows PowerShell sağlayıcınız Windows PowerShell'e kaydedildiğinde, komut satırında desteklenen cmdlet'leri çalıştırarak bunu test edebilirsiniz. Örneğin, örnek içerik sağlayıcısını test edin.
veritabanı tablosundaki belirtilen öğenin içeriğini Path parametresi tarafından belirtilen yolda almak için Get-Content cmdlet'ini kullanın.
ReadCount parametresi, tanımlı içerik okuyucunun okuyacak öğe sayısını belirtir (varsayılan 1). Aşağıdaki komut girdisiyle, cmdlet tablodan iki satır (öğe) alır ve içeriğini görüntüler. Aşağıdaki örnek çıktıda kurgusal bir Access veritabanı kullanıldığına dikkat edin.
Get-Content -Path mydb:\Customers -ReadCount 2
ID : 1
FirstName : Eric
LastName : Gruber
Email : ericgruber@fabrikam.com
Title : President
Company : Fabrikam
WorkPhone : (425) 555-0100
Address : 4567 Main Street
City : Buffalo
State : NY
Zip : 98052
Country : USA
ID : 2
FirstName : Eva
LastName : Corets
Email : evacorets@cohowinery.com
Title : Sales Representative
Company : Coho Winery
WorkPhone : (360) 555-0100
Address : 8910 Main Street
City : Cabmerlot
State : WA
Zip : 98089
Country : USA
Ayrıca Bkz.
Windows PowerShell sağlayıcıları oluşturma
Windows PowerShell sağlayıcınızı Tasarlama
Nesne Türlerini ve Biçimlendirme Genişletmeyi
Gezinti Windows PowerShell sağlayıcısı uygulama
Cmdlet'leri, Sağlayıcıları ve Konak Uygulamalarını Kaydetme
Windows PowerShell SDK
PowerShell