Windows PowerShell İçerik Sağlayıcısı Oluşturma
bu konu, kullanıcının bir veri deposundaki öğelerin içeriğini işlemesini sağlayan bir Windows PowerShell sağlayıcı oluşturmayı açıklamaktadı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.
Not
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ının C# kaynak dosyasını (AccessDBSampleProvider06. cs) indirebilirsiniz. indirme yönergeleri için bkz. nasıl yüklenir Windows PowerShell ve Windows PowerShell SDK 'sını indirin. İndirilen kaynak dosyalar <PowerShell Samples> dizinde 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 içerik sağlayıcı sınıfını tanımlayın
Windows PowerShell bir içerik sağlayıcısı, System. Management. Automation. provider. ıtentcmdletprovider arabirimini destekleyen bir .net sınıfı yaratmalıdır. Bu bölümde açıklanan öğe sağlayıcısı için sınıf tanımı aşağıda verilmiştir.
[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. ikinci parametre, komut işleme sırasında sağlayıcının Windows PowerShell çalışma zamanına sunduğu Windows PowerShell özgü özellikleri belirtir. bu sağlayıcı için eklenen Windows PowerShell belirli yetenekler yok.
Taban sınıfın Iş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 birçok sınıftan türetilir. bu nedenle, bir Windows PowerShell içerik sağlayıcısı, genellikle bu sınıfların sunduğu tüm işlevleri tanımlar.
oturuma özgü başlatma bilgilerini ekleme ve sağlayıcı tarafından kullanılan kaynakları serbest bırakma hakkında daha fazla bilgi için bkz. temel Windows PowerShell sağlayıcısı oluşturma. Ancak, burada açıklanan sağlayıcı dahil olmak üzere çoğu sağlayıcı, Windows PowerShell tarafından sağlanmış olan 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.
Öğe alma, ayarlama ve temizleme gibi bir veri deposunun öğelerini işlemek için, sağlayıcının System. Management. Automation. Provider. ıtemcmdletprovider temel sınıfı tarafından sunulan yöntemleri uygulaması gerekir. bu yöntemleri uygulama hakkında daha fazla bilgi için bkz. Windows PowerShell öğesi 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 sunulan 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. buna ek olarak, bu Windows PowerShell içerik sağlayıcısı system . management. automation. provider. ıtentcmdletprovider arabirimini system. management. automation. provider. navigationcmdletprovider temel sınıfına ekleyebilir ve bu nedenle, bu sınıf tarafından sunulan yöntemleri uygulamalıdır. daha fazla bilgi için bkz. bu yöntemleri uygulama, bkz. bir gezinti Windows PowerShell sağlayıcısı uygulama.
Içerik okuyucu uygulama
Bir öğeden içerik okumak için, bir sağlayıcının System. Management. Automation. Provider. ıditentreader'dan türeyen bir içerik okuyucu sınıfını uygulamalıdır. Bu sağlayıcı için içerik okuyucu, 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şınan bir arama yöntemi, içerik okuyucuyu kapatan bir Kapanış yöntemi ve bir 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
Içerik yazıcısını uygulama
Bir öğeye içerik yazmak için, bir sağlayıcının System. Management. Automation. Provider. Icontentwriter'dan türeyen bir içerik yazıcı sınıfı uygulaması gerekir. İçerik yazıcı sınıfı, belirtilen satır içeriğini yazan bir yazma yöntemi, içerik yazıcısını taşınan bir arama yöntemi, Içerik yazıcısını kapatan bir Kapanış yöntemi ve bir Dispose yöntemi 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
Içerik okuyucuyu alma
Bir öğeden içerik almak için, sağlayıcının cmdlet 'ini desteklemesi için System. Management. Automation. Provider. ıtentcmdletprovider. GetContentReader * uygulaması gerekir Get-Content
. Bu yöntem, belirtilen yolda bulunan öğe için içerik okuyucuyu döndürür. Böylece, içerik okumak için Okuyucu nesnesi açılabilir.
Bu sağlayıcı için bu yöntem için System. Management. Automation. Provider. ıtentcmdletprovider. GetContentReader * uygulamasıdı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 hatırlamaları gerekenler
System. Management. Automation. Provider. ıtentcmdletprovider. GetContentReader *uygulaması için aşağıdaki koşullar geçerli olabilir:
sağlayıcı sınıfını tanımlarken, Windows PowerShell bir içerik sağlayıcısı System. Management. Automation. provider. providercapabilities numaralandırmasından expandjoker karakter, filtre, dahil etme veya hariç tutma için sağlayıcı özellikleri bildirebilir. Bu durumlarda, System. Management. Automation. Provider. ıtentcmdletprovider. GetContentReader * yönteminin uygulanması, yönteme geçirilen yolun belirtilen yetenekler için gereksinimleri 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 * Properties.
Varsayılan olarak, System. Management. Automation. Provider. Cmdletprovider. zorlamalı * özelliği olarak ayarlanmadığı müddetçe, bu yöntemin geçersiz kılmaları kullanıcıdan gizlenen nesneler için bir okuyucu almamalıdır
true
. Yol, kullanıcıdan gizlenen bir öğeyi temsil ediyorsa ve System. Management. Automation. Provider. Cmdletprovider. zorlamalı * olarak ayarlanmışsa bir hata yazılması gerekirfalse
.
Get-Content cmdlet 'Ine dinamik parametreler iliştirme
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ı System. Management. Automation. provider. ıtentcmdletprovider. getcontentreaderdynamicparameters * metodunu uygulamalıdır. Bu yöntem, belirtilen yoldaki öğe için dinamik parametreleri alır ve cmdlet sınıfına ya da System. Management. Automation. Runtimedefinedparameterdictionary nesnesine benzer ayrıştırma öznitelikleri olan özellikler ve alanlar içeren bir nesne döndürür. Windows PowerShell çalışma zamanı, cmdlet 'e 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;
}
Içerik yazıcısı alınıyor
Bir öğeye içerik yazmak için sağlayıcının ve cmdlet 'lerini desteklemek için System. Management. Automation. Provider. ıtentcmdletprovider. Getcontentwriter * uygulaması gerekir Set-Content
Add-Content
. Bu yöntem, belirtilen yolda bulunan öğe için içerik yazıcısını döndürür.
Bu yöntem için System. Management. Automation. Provider. ıtentcmdletprovider. Getcontentwriter * uygulamasıdı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 hatırlamaları gerekenler
System. Management. Automation. Provider. ıtentcmdletprovider. Getcontentwriter *uygulamanız için aşağıdaki koşullar geçerli olabilir:
sağlayıcı sınıfını tanımlarken, Windows PowerShell bir içerik sağlayıcısı System. Management. Automation. provider. providercapabilities numaralandırmasından expandjoker karakter, filtre, dahil etme veya hariç tutma için sağlayıcı özellikleri bildirebilir. Bu durumlarda, System. Management. Automation. Provider. ıtentcmdletprovider. Getcontentwriter * yönteminin uygulanması, yönteme geçirilen yolun belirtilen yetenekler için gereksinimleri 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 * Properties.
Varsayılan olarak, System. Management. Automation. Provider. Cmdletprovider. zorlamalı * özelliği olarak ayarlanmadığı müddetçe, bu yöntemin geçersiz kılmaları kullanıcıdan gizlenen nesneler için bir yazıcı almamalıdır
true
. Yol, kullanıcıdan gizlenen bir öğeyi temsil ediyorsa ve System. Management. Automation. Provider. Cmdletprovider. zorlamalı * olarak ayarlanmışsa bir hata yazılması gerekirfalse
.
Add-Content ve Set-Content cmdlet 'Lerine dinamik parametreler iliştirme
Add-Content
Ve Set-Content
cmdlet 'leri, çalışma zamanı eklenen ek dinamik parametreler gerektirebilir. bu dinamik parametreleri sağlamak için Windows PowerShell içerik sağlayıcısı, bu parametreleri işlemek için System. Management. Automation. provider. ıtentcmdletprovider. Getcontentwriterdynamicparameters * metodunu uygulamalıdır. Bu yöntem, belirtilen yoldaki öğe için dinamik parametreleri alır ve cmdlet sınıfına ya da System. Management. Automation. Runtimedefinedparameterdictionary nesnesine benzer ayrıştırma öznitelikleri olan özellikler ve alanlar içeren bir nesne döndürür. Windows PowerShell çalışma zamanı, cmdlet 'lere parametreleri eklemek için döndürülen nesnesini 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;
}
Içerik temizleniyor
İçerik sağlayıcınız cmdlet 'i desteklemek için System. Management. Automation. Provider. ıtentcmdletprovider. ClearContent * metodunu uygular Clear-Content
. Bu yöntem, belirtilen yoldaki öğenin içeriğini kaldırır, ancak öğeyi dokunulmamış halde bırakır.
Bu sağlayıcı için System. Management. Automation. Provider. ıtentcmdletprovider. ClearContent * yönteminin uygulamasıdı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 hatırlamaları gerekenler
System. Management. Automation. Provider. ıtentcmdletprovider. ClearContent *uygulaması için aşağıdaki koşullar geçerli olabilir:
sağlayıcı sınıfını tanımlarken, Windows PowerShell bir içerik sağlayıcısı System. Management. Automation. provider. providercapabilities numaralandırmasından expandjoker karakter, filtre, dahil etme veya hariç tutma için sağlayıcı özellikleri bildirebilir. Bu durumlarda, System. Management. Automation. Provider. ıtentcmdletprovider. ClearContent * yönteminin uygulanması, yönteme geçirilen yolun belirtilen yetenekler için gereksinimleri 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 * Properties.
Varsayılan olarak, bu yöntemin geçersiz kılmaları, System. Management. Automation. Provider. Cmdletprovider. zorlamalı * özelliği olarak ayarlanmadığı müddetçe kullanıcıdan gizlenen nesnelerin içeriğini temizlemez
true
. Yol, kullanıcıdan gizlenen bir öğeyi temsil ediyorsa ve System. Management. Automation. Provider. Cmdletprovider. zorlamalı * olarak ayarlanmışsa bir hata yazılması gerekirfalse
.System. Management. Automation. Provider. ıtentcmdletprovider. ClearContent * yönteminin uygulamanız System. Management. Automation. Provider. Cmdletprovider. ShouldProcess 'i çağırmalıdır ve veri deposunda herhangi bir değişiklik yapmadan önce dönüş değerini doğrular. Bu yöntem, veri deposunda içerik temizleme gibi bir değişiklik yapıldığında bir işlemin yürütülmesini doğrulamak için kullanılır. System. Management. Automation. Provider. cmdletprovider. shouldprocess yöntemi, kullanıcıya değiştirilecek kaynak adını, hangi komut satırı ayarlarını ya da neyin görüntüleneceğini belirlemede tercih değişkenlerini işlemek Windows PowerShell.
System. Management. Automation. Provider. Cmdletprovider. ShouldProcess çağrısı yapıldıktan sonra
true
System. Management. Automation. Provider. ıtentcmdletprovider. ClearContent * yöntemi System. Management. Automation. Provider. cmdletprovider. shouldcontinue metodunu çağırmalıdır. Bu yöntem, işleme devam edip etmediğinizi doğrulamak üzere geri bildirimde bulunmak için kullanıcıya bir ileti gönderir. System. Management. Automation. Provider. Cmdletprovider. ShouldContinue çağrısı, tehlikeli olabilecek sistem değişikliklerine yönelik ek bir denetim sağlar.
Clear-Content cmdlet 'Ine dinamik parametreler iliştirme
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ı, bu parametreleri işlemek için System. Management. Automation. provider. ıtentcmdletprovider. clearcontentdynamicparameters * metodunu uygulamalıdır. Bu yöntem, belirtilen yoldaki öğenin parametrelerini alır. Bu yöntem, belirtilen yoldaki öğe için dinamik parametreleri alır ve cmdlet sınıfına ya da System. Management. Automation. Runtimedefinedparameterdictionary nesnesine benzer ayrıştırma öznitelikleri olan özellikler ve alanlar içeren bir nesne döndürür. Windows PowerShell çalışma zamanı, cmdlet 'e 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
Tüm örnek kod için bkz. AccessDbProviderSample06 Code Sample.
Nesne türlerini ve biçimlendirmeyi tanımlama
Sağlayıcı yazarken, varolan nesnelere üye eklemek veya yeni nesneler tanımlamak gerekebilir. bu işlem tamamlandığında, Windows PowerShell nesnenin üyelerini ve nesnenin nasıl görüntülendiğini tanımlayan bir biçim dosyasını tanımlamak için kullanabileceği bir tür dosyası oluşturmanız gerekir. Daha fazla bilgi için bkz. nesne türlerini ve biçimlendirmeyi genişletme.
Windows PowerShell sağlayıcısı oluşturma
Bkz. cmdlet 'leri, sağlayıcıları ve ana bilgisayar uygulamalarını kaydetme.
Windows PowerShell sağlayıcıyı test etme
Windows PowerShell sağlayıcınız Windows PowerShell ile kaydettirilirse, komut satırında desteklenen cmdlet 'leri çalıştırarak test edebilirsiniz. Örneğin, örnek içerik sağlayıcısını test edin.
Get-Content
Parametresi tarafından belirtilen yoldaki veritabanı tablosunda belirtilen öğenin içeriğini almak için cmdlet 'ini kullanın Path
. ReadCount
Parametresi, tanımlı içerik okuyucusunun okunacağı öğelerin sayısını belirtir (varsayılan 1). Aşağıdaki komut girdisiyle, cmdlet tablodaki iki satırı (öğe) alır ve içeriklerini görüntüler. Aşağıdaki örnek çıktının kurgusal bir Access veritabanı kullandığını unutmayın.
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çimlendirmeyi genişletme
gezinti Windows PowerShell sağlayıcısı uygulama
Cmdlet 'Leri, sağlayıcıları ve ana bilgisayar uygulamalarını kaydetme
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin