Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Detta ämne beskriver hur man skapar en Windows PowerShell-leverantör som kan manipulera data i en datalagring. I detta ämne kallas dataelementen i lagringen för "objekten" i datamagasinet. Som en följd kallas en leverantör som kan manipulera data i lagret för en Windows PowerShell-produktleverantör.
Anmärkning
Du kan ladda ner C#-källfilen (AccessDBSampleProvider03.cs) för denna leverantör med Microsoft Windows Software Development Kit för Windows Vista och .NET Framework 3.0 Runtime Components. För nedladdningsinstruktioner, se Hur man installerar Windows PowerShell och laddar ner Windows PowerShell SDK.
De nedladdade källfilerna finns tillgängliga i katalogen PowerShell Samples . För mer information om andra implementeringar av Windows PowerShell-leverantörer, se Designing Your Windows PowerShell Provider.
Windows PowerShell-produktleverantören som beskrivs i detta ämne hämtar data från en Access-databas. I detta fall är ett "objekt" antingen en tabell i Access-databasen eller en rad i en tabell.
Definiera Windows PowerShell item provider-klassen
En Windows PowerShell-itemleverantör måste definiera en .NET-klass som härstammar från Basklassen System.Management.Automation.Provider.ItemCmdletProvider . Följande är klassdefinitionen för den föremålsleverantör som beskrivs i detta avsnitt.
[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : ItemCmdletProvider
Observera att i denna klassdefinition innehåller attributet System.Management.Automation.Provider.CmdletProviderAttribute två parametrar. Den första parametern specificerar ett användarvänligt namn för leverantören som används av Windows PowerShell. Den andra parametern specificerar de Windows PowerShell-specifika funktioner som leverantören exponerar för Windows PowerShell-runtime under kommandobearbetningen. För denna leverantör finns inga extra Windows PowerShell-specifika funktioner.
Definiera basfunktionalitet
Som beskrivs i Design Your Windows PowerShell Provider härstammar klassen System.Management.Automation.Provider.DriveCmdletProvider från flera andra klasser som erbjöd olika funktionalitet för leverantörer. En Windows PowerShell-produktleverantör måste därför definiera all funktionalitet som tillhandahålls av dessa klasser.
För mer information om hur man implementerar funktionalitet för att lägga till sessionsspecifik initieringsinformation och för att frigöra resurser som används av leverantören, se Skapa en grundläggande Windows PowerShell-leverantör. De flesta leverantörer, inklusive den som beskrivs här, kan dock använda standardimplementeringen av denna funktionalitet som tillhandahålls av Windows PowerShell.
Innan Windows PowerShell-produktleverantören kan manipulera objekten i lagret måste den implementera metoderna i basklassen System.Management.Automation.Provider.DriveCmdletProvider för att få tillgång till datalagret. För mer information om hur man implementerar denna klass, se Skapa en Windows PowerShell Drive Provider.
Kontroll av vägens validitet
När man letar efter en databit tillhandahåller Windows PowerShell-runtime en Windows PowerShell-path till leverantören, enligt definitionen i avsnittet "PSPath Concepts" i How Windows PowerShell Works. En Windows PowerShell-produktleverantör måste verifiera den syntaktiska och semantiska giltigheten för varje väg som skickas till den genom att implementera metoden System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath . Denna metod returnerar true om vägen är giltig, och false annars. Var medveten om att implementeringen av denna metod inte bör verifiera förekomsten av objektet vid vägen, utan endast att sökvägen är syntaktiskt och semantiskt korrekt.
Här är implementeringen av System.Management.Automation.Provider.ItemCmdletProvider.IsValidPath för denna leverantör. Observera att denna implementation anropar en NormalizePath-hjälpmetod för att konvertera alla separatorer i vägen till en uniform.
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
Att avgöra om ett föremål existerar
Efter att ha verifierat vägen måste Windows PowerShell-runtime avgöra om ett dataobjekt finns på den vägen. För att stödja denna typ av förfrågan implementerar Windows PowerShell-produktleverantören metoden System.Management.Automation.Provider.ItemCmdletProvider.ItemExist. Denna metod returnerar true ett objekt som hittas vid den angivna sökvägen och false (standard) annars.
Här är implementeringen av System.Management.Automation.Provider.ItemCmdletProvider.ItemExistist-metoden för denna leverantör. Observera att denna metod anropar hjälpmetoderna PathIsDrive, ChunkPath och GetTable och använder ett leverantörsdefinierad DatabaseTableInfo-objekt .
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
Saker att komma ihåg när du implementerar ItemExists
Följande villkor kan gälla för din implementation av System.Management.Automation.Provider.ItemCmdletProvider.ItemExists:
- När leverantörsklassen definieras kan en Windows PowerShell-produktleverantör deklarera leverantörsförmågor som
ExpandWildcards,Filter,Include, ellerExclude, från System.Management.Automation.Provider.ProviderCapabilities-enumerationen . I dessa fall måste implementeringen av metoden System.Management.Automation.Provider.ItemCmdletProvider.ItemExists säkerställa att vägen som skickas till metoden uppfyller kraven för de specificerade kapabiliteterna. För att göra detta bör metoden få tillgång till rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude och System.Management.Automation.Provider.CmdletProvider.Include . - Implementeringen av denna metod bör hantera alla former av åtkomst till objektet som kan göra objektet synligt för användaren. Till exempel, om en användare har skrivbehörighet till en fil via FileSystem-leverantören (tillhandahållen av Windows PowerShell), men inte läsbehörighet, finns filen fortfarande kvar och System.Management.Automation.Provider.ItemCmdletProvider.ItemExists returnerar
true. Din implementation kan kräva att du kontrollerar ett föräldraobjekt för att se om barnposten kan enumereras.
Att koppla dynamiska parametrar till Test-Path-cmdleten
Ibland kräver cmdleten som anropar Test-PathSystem.Management.Automation.Provider.ItemCmdletProvider.ItemExists ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-produktleverantören implementera metoden System.Management.Automation.Provider.ItemCmdletProvider.ItemExistsDynamicParameters . Denna metod hämtar de dynamiska parametrarna för objektet vid den angivna sökvägen och returnerar ett objekt som har egenskaper och fält med parsningsattribut liknande en cmdlet-klass eller ett System.Management.Automation.RuntimeDefinedParameterDictionary-objekt . Windows PowerShell-runtime använder det returnerade objektet för att lägga till parametrarna i Test-Path cmdleten.
Denna Windows PowerShell-produktleverantör implementerar inte denna metod. Följande kod är dock standardimplementeringen av denna metod.
Att hämta ett föremål
För att hämta ett objekt måste Windows PowerShell-produktleverantören åsidosätta System.Management.Automation.Provider.ItemCmdletProvider.GetItem-metoden för att stödja anrop från Get-Item cmdleten. Denna metod skriver objektet med metoden System.Management.Automation.Provider.CmdletProvider.WriteItemObject .
Här är implementeringen av System.Management.Automation.Provider.ItemCmdletProvider.GetItem-metoden för denna leverantör. Observera att denna metod använder GetTable och GetRow hjälpmetoder för att hämta objekt som antingen är tabeller i Access-databasen eller rader i en datatabell.
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
Saker att komma ihåg när man implementerar GetItem
Följande villkor kan gälla för en implementation av System.Management.Automation.Provider.ItemCmdletProvider.GetItem:
När leverantörsklassen definieras kan en Windows PowerShell-produktleverantör deklarera leverantörsförmågor som
ExpandWildcards,Filter,Include, ellerExclude, från System.Management.Automation.Provider.ProviderCapabilities-enumerationen . I dessa fall måste implementeringen av System.Management.Automation.Provider.ItemCmdletProvider.GetItem säkerställa att den väg som skickas till metoden uppfyller dessa krav. För att göra detta bör metoden få tillgång till rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude och System.Management.Automation.Provider.CmdletProvider.Include .Som standard bör överskrivningar av denna metod inte hämta objekt som vanligtvis är dolda för användaren om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force är inställd på
true. Till exempel kontrollerar metoden System.Management.Automation.Provider.ItemCmdletProvider.GetItem för FileSystem-leverantören egenskapen System.Management.Automation.Provider.CmdletProvider.Force innan den försöker anropa System.Management.Automation.Provider.CmdletProvider.WriteItemObject för dolda eller systemfiler.
Att koppla dynamiska parametrar till Get-Item-cmdleten
Ibland kräver cmdleten Get-Item ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-produktleverantören implementera metoden System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters . Denna metod hämtar de dynamiska parametrarna för objektet vid den angivna sökvägen och returnerar ett objekt som har egenskaper och fält med parsningsattribut liknande en cmdlet-klass eller ett System.Management.Automation.RuntimeDefinedParameterDictionary-objekt . Windows PowerShell-runtime använder det returnerade objektet för att lägga till parametrarna i Get-Item cmdleten.
Denna leverantör implementerar inte denna metod. Följande kod är dock standardimplementeringen av denna metod.
Att ställa upp ett föremål
För att sätta ett element måste Windows PowerShell-produktleverantören åsidosätta metoden System.Management.Automation.Provider.ItemCmdletProvider.SetItem för att stödja anrop från Set-Item cmdleten. Denna metod sätter värdet på objektet vid den angivna vägen.
Denna leverantör tillhandahåller ingen överskrivning för System.Management.Automation.Provider.ItemCmdletProvider.SetItem-metoden . Följande är dock standardimplementeringen av denna metod.
Saker att komma ihåg när du implementerar SetItem
Följande villkor kan gälla för din implementation av System.Management.Automation.Provider.ItemCmdletProvider.SetItem:
När leverantörsklassen definieras kan en Windows PowerShell-produktleverantör deklarera leverantörsförmågor som
ExpandWildcards,Filter,Include, ellerExclude, från System.Management.Automation.Provider.ProviderCapabilities-enumerationen . I dessa fall måste implementationen av System.Management.Automation.Provider.ItemCmdletProvider.SetItem säkerställa att vägen som skickas till metoden uppfyller dessa krav. För att göra detta bör metoden få tillgång till rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude och System.Management.Automation.Provider.CmdletProvider.Include .Som standard ska överskrivningar av denna metod inte sätta eller skriva objekt som är dolda för användaren om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force är inställd på
true. Ett fel ska skickas till metoden System.Management.Automation.Provider.CmdletProvider.WriteError om sökvägen representerar ett dolt objekt och System.Management.Automation.Provider.CmdletProvider.Force är satt tillfalse.Din implementation av metoden System.Management.Automation.Provider.ItemCmdletProvider.SetItem bör anropa System.Management.Automation.Provider.CmdletProvider.ShouldProcess och verifiera dess returvärde innan du gör några ändringar i datalagret. Denna metod används för att bekräfta att en operation utförs när en ändring görs i datalagringen, till exempel genom att radera filer. System.Management.Automation.Provider.CmdletProvider.ShouldProcess skickar namnet på resursen som ska ändras till användaren, där Windows PowerShell-runtime tar hänsyn till eventuella kommandoradsinställningar eller preferensvariabler vid avgörandet av vad som ska visas.
Efter anropet till System.Management.Automation.Provider.CmdletProvider.ShouldProcess återvänder
true, ska metoden System.Management.Automation.Provider.ItemCmdletProvider.SetItem anropa metoden System.Management.Automation.Provider.CmdletProvider.ShouldContinue. Denna metod skickar ett meddelande till användaren för att ge feedback för att verifiera om operationen ska fortsätta. Anropet till System.Management.Automation.Provider.CmdletProvider.ShouldContinue möjliggör en ytterligare kontroll för potentiellt farliga systemändringar.
Hämta dynamiska parametrar för SetItem
Ibland kräver cmdleten Set-Item ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-produktleverantören implementera metoden System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters . Denna metod hämtar de dynamiska parametrarna för objektet vid den angivna sökvägen och returnerar ett objekt som har egenskaper och fält med parsningsattribut liknande en cmdlet-klass eller ett System.Management.Automation.RuntimeDefinedParameterDictionary-objekt . Windows PowerShell-runtime använder det returnerade objektet för att lägga till parametrarna i Set-Item cmdleten.
Denna leverantör implementerar inte denna metod. Följande kod är dock standardimplementeringen av denna metod.
Rensa ett föremål
För att rensa ett element implementerar Windows PowerShell-produktleverantören metoden System.Management.Automation.Provider.ItemCmdletProvider.ClearItem för att stödja anrop från Clear-Item cmdleten. Denna metod raderar dataobjektet vid den angivna vägen.
Denna leverantör implementerar inte denna metod. Följande kod är dock standardimplementeringen av denna metod.
Saker att komma ihåg när man implementerar ClearItem
Följande villkor kan gälla för en implementation av System.Management.Automation.Provider.ItemCmdletProvider.ClearItem:
När leverantörsklassen definieras kan en Windows PowerShell-produktleverantör deklarera leverantörsförmågor som
ExpandWildcards,Filter,Include, ellerExclude, från System.Management.Automation.Provider.ProviderCapabilities-enumerationen . I dessa fall måste implementeringen av System.Management.Automation.Provider.ItemCmdletProvider.ClearItem säkerställa att vägen som skickas till metoden uppfyller dessa krav. För att göra detta bör metoden få tillgång till rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude och System.Management.Automation.Provider.CmdletProvider.Include .Som standard ska överskrivningar av denna metod inte sätta eller skriva objekt som är dolda för användaren om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force är inställd på
true. Ett fel ska skickas till metoden System.Management.Automation.Provider.CmdletProvider.WriteError om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.CmdletProvider.Force är inställd påfalse.Din implementation av metoden System.Management.Automation.Provider.ItemCmdletProvider.SetItem bör anropa System.Management.Automation.Provider.CmdletProvider.ShouldProcess och verifiera dess returvärde innan du gör några ändringar i datalagret. Denna metod används för att bekräfta att en operation utförs när en ändring görs i datalagringen, till exempel genom att radera filer. System.Management.Automation.Provider.CmdletProvider.ShouldProcess skickar namnet på resursen som ska ändras till användaren, tillsammans med Windows PowerShell-runtime och hanterar eventuella kommandoradsinställningar eller preferensvariabler för att avgöra vad som ska visas.
Efter anropet till System.Management.Automation.Provider.CmdletProvider.ShouldProcess återvänder
true, ska metoden System.Management.Automation.Provider.ItemCmdletProvider.SetItem anropa metoden System.Management.Automation.Provider.CmdletProvider.ShouldContinue. Denna metod skickar ett meddelande till användaren för att ge feedback för att verifiera om operationen ska fortsätta. Anropet till System.Management.Automation.Provider.CmdletProvider.ShouldContinue möjliggör en ytterligare kontroll för potentiellt farliga systemändringar.
Hämta dynamiska parametrar för ClearItem
Ibland kräver cmdleten Clear-Item ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-produktleverantören implementera metoden: System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters . Denna metod hämtar de dynamiska parametrarna för objektet vid den angivna sökvägen och returnerar ett objekt som har egenskaper och fält med parsningsattribut liknande en cmdlet-klass eller ett System.Management.Automation.RuntimeDefinedParameterDictionary-objekt . Windows PowerShell-runtime använder det returnerade objektet för att lägga till parametrarna i Clear-Item cmdleten.
Denna föremålsleverantör implementerar inte denna metod. Följande kod är dock standardimplementeringen av denna metod.
Utförande av en standardåtgärd för ett objekt
En Windows PowerShell-produktleverantör kan implementera metoden System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction för att stödja anrop från Invoke-Item cmdleten, vilket tillåter leverantören att utföra en standardåtgärd för objektet på den angivna sökvägen. Till exempel kan filsystemleverantören använda denna metod för att anropa ShellExecute för ett specifikt objekt.
Denna leverantör implementerar inte denna metod. Följande kod är dock standardimplementeringen av denna metod.
Saker att komma ihåg när du implementerar InvokeDefaultAction
Följande villkor kan gälla för en implementation av System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction:
När leverantörsklassen definieras kan en Windows PowerShell-produktleverantör deklarera leverantörsförmågor som
ExpandWildcards,Filter,Include, ellerExclude, från System.Management.Automation.Provider.ProviderCapabilities-enumerationen . I dessa fall måste implementeringen av System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultAction säkerställa att den väg som skickas till metoden uppfyller dessa krav. För att göra detta bör metoden få tillgång till rätt egenskap, till exempel egenskaperna System.Management.Automation.Provider.CmdletProvider.Exclude och System.Management.Automation.Provider.CmdletProvider.Include .Som standard ska överskrivningar av denna metod inte sätta eller skriva objekt som är dolda för användaren om inte egenskapen System.Management.Automation.Provider.CmdletProvider.Force är satt till
true. Ett fel ska skickas till metoden System.Management.Automation.Provider.CmdletProvider.WriteError om sökvägen representerar ett objekt som är dolt för användaren och System.Management.Automation.Provider.CmdletProvider.Force är inställd påfalse.
Hämta dynamiska parametrar för InvokeDefaultAction
Ibland kräver cmdleten Invoke-Item ytterligare parametrar som specificeras dynamiskt vid körning. För att tillhandahålla dessa dynamiska parametrar måste Windows PowerShell-produktleverantören implementera metoden System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters . Denna metod hämtar de dynamiska parametrarna för objektet vid den angivna sökvägen och returnerar ett objekt som har egenskaper och fält med parsningsattribut liknande en cmdlet-klass eller ett System.Management.Automation.RuntimeDefinedParameterDictionary-objekt . Windows PowerShell-runtime använder det returnerade objektet för att lägga till de dynamiska parametrarna i Invoke-Item cmdleten.
Denna föremålsleverantör implementerar inte denna metod. Följande kod är dock standardimplementeringen av denna metod.
Implementering av hjälpmetoder och klasser
Denna itemleverantör implementerar flera hjälpmetoder och klasser som används av de offentliga överskrivningsmetoder som definieras av Windows PowerShell. Koden för dessa hjälpmetoder och klasser visas i avsnittet Kodexempel .
NormalizePath-metoden
Denna itemleverantör implementerar en NormalizePath-hjälpmetod för att säkerställa att sökvägen har ett konsekvent format. Det angivna formatet använder en backslash (\) som separator.
PathIsDrive-metoden
Denna item provider implementerar en PathIsDrive-hjälpmetod för att avgöra om den angivna sökvägen faktiskt är disknamnet.
ChunkPath-metoden
Denna produktleverantör implementerar en ChunkPath-hjälpmetod som delar upp den angivna vägen så att leverantören kan identifiera sina individuella element. Den returnerar en array bestående av ban-elementen.
GetTable-metoden
Denna itemleverantör implementerar hjälpmetoden GetTables som returnerar ett DatabaseTableInfo-objekt som representerar information om tabellen som anges i anropet.
GetRow-metod
System.Management.Automation.Provider.ItemCmdletProvider.GetItem-metoden för denna itemprovider anropar GetRows-hjälpmetoden. Denna hjälpmetod hämtar ett DatabaseRowInfo-objekt som representerar information om den angivna raden i tabellen.
DatabaseTableInfo-klassen
Denna itemleverantör definierar en DatabaseTableInfo-klass som representerar en samling information i en datatabell i databasen. Denna klass liknar System.IO.Directoryinfo-klassen .
Exempelobjektsleverantören definierar en DatabaseTableInfo.GetTabletables-metod som returnerar en samling tabellinformationsobjekt som definierar tabellerna i databasen. Denna metod inkluderar ett försök/fånga-block för att säkerställa att eventuella databasfel visas som en rad utan några poster.
DatabaseRowInfo-klassen
Denna itemleverantör definierar hjälpklassen DatabaseRowInfo som representerar en rad i en tabell i databasen. Denna klass liknar System.IO.FileInfo-klassen .
Exempelleverantören definierar en DatabaseRowInfo.GetRows-metod för att returnera en samling radinformationsobjekt för den angivna tabellen. Denna metod inkluderar en försök/fånga-block för att fånga undantag. Eventuella fel kommer inte att resultera i någon radinformation.
Kodexempel
För komplett exempelkod, se AccessDbProviderSample03 Code Sample.
Definiera objekttyper och formatering
När man skriver en leverantör kan det vara nödvändigt att lägga till medlemmar till befintliga objekt eller definiera nya objekt. När det är klart, skapa en Types-fil som Windows PowerShell kan använda för att identifiera objektets medlemmar och en Format-fil som definierar hur objektet visas. För mer information, se Utökning av objekttyper och formatering.
Bygger Windows PowerShell-leverantören
Se hur du registrerar cmdlets, leverantörer och värdapplikationer.
Testning av Windows PowerShell-leverantören
När denna Windows PowerShell-produktleverantör är registrerad hos Windows PowerShell kan du endast testa leverantörens grundläggande och drivfunktionalitet. För att testa manipulationen av objekt måste du också implementera containerfunktionalitet som beskrivs i Implementing a Container Windows PowerShell Provider.
Se även
- Windows PowerShell SDK
- Windows PowerShell Programmerarguide
- Skapa Windows PowerShell-leverantörer
- Designa din Windows PowerShell-leverantör
- Utvidgning av objekttyper och formatering
- Hur Windows PowerShell fungerar
- Skapa en Container Windows PowerShell-leverantör
- Skapa en PowerShell-leverantör för Drive Windows
- Hur man registrerar cmdlets, leverantörer och värdapplikationer