Progettazione del provider di Windows PowerShellDesigning Your Windows PowerShell Provider

È necessario implementare un provider di Windows PowerShell se il prodotto o la configurazione espone un set di dati archiviati, ad esempio un database che l'utente desidera esplorare o esplorare.You should implement a Windows PowerShell provider if your product or configuration exposes a set of stored data, such as a database that the user will want to navigate or browse. Inoltre, se il prodotto fornisce un contenitore, anche se non si tratta di un contenitore multilivello, è opportuno implementare un provider di Windows PowerShell.Additionally, if your product provides a container, even if it is not a multilevel container, it makes sense to implement a Windows PowerShell provider. Ad esempio, potrebbe essere necessario implementare un provider di contenitori di Windows PowerShell se il verbo del cmdlet Copy, Move, Rename, New o Remove ha senso come un'operazione sui dati di configurazione o del prodotto.For example, you might want to implement a Windows PowerShell container provider if the cmdlet verb Copy, Move, Rename, New, or Remove makes sense as an operation on your product or configuration data.

Percorsi di Windows PowerShell per identificare il providerWindows PowerShell Paths Identify Your Provider

Il runtime di Windows PowerShell usa i percorsi di Windows PowerShell per accedere al provider di Windows PowerShell appropriato.The Windows PowerShell runtime uses Windows PowerShell paths to access the appropriate Windows PowerShell provider. Quando un cmdlet specifica uno di questi percorsi, il runtime sa quale provider utilizzare per accedere all'archivio dati associato.When a cmdlet specifies one of these paths, the runtime knows which provider to use to access the associated data store. Questi percorsi includono percorsi qualificati per l'unità, percorsi qualificati dal provider, percorsi diretti del provider e percorsi interni del provider.These paths include drive-qualified paths, provider-qualified paths, provider-direct paths, and provider-internal paths. Ogni provider di Windows PowerShell deve supportare uno o più di questi percorsi.Each Windows PowerShell provider must support one or more of these paths.

Per ulteriori informazioni sui percorsi di Windows PowerShell, vedere funzionamento di Windows PowerShell.For more information about Windows PowerShell paths, see How Windows PowerShell Works.

Definizione di un percorso di Drive-QualifiedDefining a Drive-Qualified Path

Per consentire all'utente di accedere ai dati che si trovano in un'unità fisica, il provider di Windows PowerShell deve supportare un percorso qualificato dall'unità.To allow the user to access data located at a physical drive, your Windows PowerShell provider must support a drive-qualified path. Questo percorso inizia con il nome dell'unità seguito da due punti (:), ad esempio, unità: \ abc\bar.This path starts with the drive name followed by a colon (:), for example, mydrive:\abc\bar.

Definizione di un percorso di Provider-QualifiedDefining a Provider-Qualified Path

Per consentire al runtime di Windows PowerShell di inizializzare e annullare l'inizializzazione del provider, il provider di Windows PowerShell deve supportare un percorso qualificato dal provider.To allow the Windows PowerShell runtime to initialize and uninitialize the provider, your Windows PowerShell provider must support a provider-qualified path. Ad esempio, FileSystem:: \ \uncshare\abc\bar è il percorso qualificato dal provider per il provider FileSystem fornito da Windows PowerShell.For example, FileSystem::\\uncshare\abc\bar is the provider-qualified path for the filesystem provider furnished by Windows PowerShell.

Definizione di un percorso di Provider-DirectDefining a Provider-Direct Path

Per consentire l'accesso remoto al provider di Windows PowerShell, deve supportare un percorso diretto del provider da passare direttamente al provider di Windows PowerShell per il percorso corrente.To allow remote access to your Windows PowerShell provider, it should support a provider-direct path to pass directly to the Windows PowerShell provider for the current location. Ad esempio, il provider del registro di sistema di Windows PowerShell può usare \ \server\regkeypath come percorso diretto del provider.For example, the registry Windows PowerShell provider can use \\server\regkeypath as a provider-direct path.

Definizione di un percorso di Provider-InternalDefining a Provider-Internal Path

Per consentire al cmdlet del provider di accedere ai dati usando le API (Application Programming Interface) non Windows PowerShell, il provider di Windows PowerShell deve supportare un percorso interno del provider.To allow the provider cmdlet to access data using non-Windows PowerShell application programming interfaces (APIs), your Windows PowerShell provider should support a provider-internal path. Questo percorso è indicato dopo "::" nel percorso qualificato dal provider.This path is indicated after the "::" in the provider-qualified path. Ad esempio, il percorso interno del provider per il provider FileSystem di Windows PowerShell è \ \uncshare\abc\bar.For example, the provider-internal path for the filesystem Windows PowerShell provider is \\uncshare\abc\bar.

Modifica dei dati archiviatiChanging Stored Data

Quando si esegue l'override dei metodi che modificano l'archivio dati sottostante, chiamare sempre il metodo System. Management. Automation. provider. CmdletProvider. Writeitemobject * con la versione più aggiornata dell'elemento modificato da tale metodo.When overriding methods that modify the underlying data store, always call the System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* method with the most up-to-date version of the item changed by that method. L'infrastruttura del provider determina se l'oggetto item deve essere passato alla pipeline, ad esempio quando l'utente specifica il parametro-PassThru.The provider infrastructure determines if the item object needs to be passed to the pipeline, such as when the user specifies the -PassThru parameter. Se il recupero dell'elemento più aggiornato è un'operazione costosa (prestazioni), è possibile testare la proprietà Context. PassThru per determinare se è effettivamente necessario scrivere l'elemento risultante.If retrieving the most up-to-date item is a costly operation (performance-wise,) you can test the Context.PassThru property to determine if you actually need to write the resulting item.

Scegliere una classe di base per il providerChoose a Base Class for Your Provider

Windows PowerShell offre una serie di classi di base che è possibile usare per implementare il proprio provider di Windows PowerShell.Windows PowerShell provides a number of base classes that you can use to implement your own Windows PowerShell provider. Quando si progetta un provider, scegliere la classe di base, descritta in questa sezione, più adatta ai propri requisiti.When designing a provider, choose the base class, described in this section, that is most suited to your requirements.

Ogni classe base del provider di Windows PowerShell rende disponibile un set di cmdlet.Each Windows PowerShell provider base class makes available a set of cmdlets. In questa sezione vengono descritti i cmdlet di, ma non vengono descritti i relativi parametri.This section describes the cmdlets, but it does not describe their parameters.

Utilizzando lo stato della sessione, il runtime di Windows PowerShell rende disponibili diversi cmdlet Location per determinati provider di Windows PowerShell, ad esempio i Get-Location cmdlet,, Set-Location Pop-Location e Push-Location .Using the session state, the Windows PowerShell runtime makes several location cmdlets available to certain Windows PowerShell providers, such as the Get-Location, Set-Location, Pop-Location, and Push-Location cmdlets. È possibile utilizzare il Get-Help cmdlet per ottenere informazioni su questi cmdlet Location.You can use the Get-Help cmdlet to obtain information about these location cmdlets.

Classe di base CmdletProviderCmdletProvider Base Class

La classe System. Management. Automation. provider. CmdletProvider definisce un provider di base di Windows PowerShell.The System.Management.Automation.Provider.Cmdletprovider class defines a basic Windows PowerShell provider. Questa classe supporta la dichiarazione del provider e fornisce una serie di proprietà e metodi disponibili per tutti i provider di Windows PowerShell.This class supports the provider declaration and supplies a number of properties and methods that are available to all Windows PowerShell providers. La classe viene richiamata dal Get-PSProvider cmdlet per elencare tutti i provider disponibili per una sessione.The class is invoked by the Get-PSProvider cmdlet to list all available providers for a session. L'implementazione di questo cmdlet viene fornita dallo stato della sessione.The implementation of this cmdlet is furnished by the session state.

Nota

I provider di Windows PowerShell sono disponibili per tutti gli ambiti del linguaggio di Windows PowerShell.Windows PowerShell providers are available to all Windows PowerShell language scopes.

Classe di base DriveCmdletProviderDriveCmdletProvider Base Class

La classe System. Management. Automation. provider. Drivecmdletprovider definisce un provider di unità di Windows PowerShell che supporta operazioni per l'aggiunta di nuove unità, la rimozione di unità esistenti e l'inizializzazione di unità predefinite.The System.Management.Automation.Provider.Drivecmdletprovider class defines a Windows PowerShell drive provider that supports operations for adding new drives, removing existing drives, and initializing default drives. Ad esempio, il provider FileSystem fornito da Windows PowerShell Inizializza le unità per tutti i volumi montati, ad esempio le unità disco rigido e i dispositivi CD/DVD.For example, the FileSystem provider provided by Windows PowerShell initializes drives for all volumes that are mounted, such as hard drives and CD/DVD device drives.

Questa classe deriva dalla classe di base System. Management. Automation. provider. CmdletProvider .This class derives from the System.Management.Automation.Provider.Cmdletprovider base class. Nella tabella seguente sono elencati i cmdlet esposti da questa classe.The following table lists the cmdlets exposed by this class. Oltre a quelle elencate, il Get-PSDrive cmdlet (esposto da stato sessione) è un cmdlet correlato usato per recuperare le unità disponibili.In addition to those listed, the Get-PSDrive cmdlet (exposed by session state) is a related cmdlet that is used to retrieve available drives.

CmdletCmdlet DefinizioneDefinition
New-PSDrive Crea una nuova unità per la sessione e trasmette le informazioni sull'unità.Creates a new drive for the session, and streams drive information.
Remove-PSDrive Rimuove un'unità dalla sessione.Removes a drive from the session.

Classe di base ItemCmdletProviderItemCmdletProvider Base Class

La classe System. Management. Automation. provider. Itemcmdletprovider definisce un provider di elementi di Windows PowerShell che esegue operazioni sui singoli elementi dell'archivio dati e non presuppone alcuna funzionalità di spostamento o contenitore.The System.Management.Automation.Provider.Itemcmdletprovider class defines a Windows PowerShell item provider that performs operations on the individual items of the data store, and it does not assume any container or navigation capabilities. Questa classe deriva dalla classe di base System. Management. Automation. provider. Drivecmdletprovider .This class derives from the System.Management.Automation.Provider.Drivecmdletprovider base class. Nella tabella seguente sono elencati i cmdlet esposti da questa classe.The following table lists the cmdlets exposed by this class.

CmdletCmdlet DefinizioneDefinition
Clear-Item Cancella il contenuto corrente degli elementi nella posizione specificata e lo sostituisce con il valore "Clear" specificato dal provider.Clears the current content of items at the specified location, and replaces it with the "clear" value specified by the provider. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
Get-Item Recupera gli elementi dal percorso specificato ed esegue il flusso degli oggetti risultanti.Retrieves items from the specified location, and streams the resultant objects.
Invoke-Item Richiama l'azione predefinita per l'elemento nel percorso specificato.Invokes the default action for the item at the specified path.
Set-Item Imposta un elemento in corrispondenza della posizione specificata con il valore indicato.Sets an item at the specified location with the indicated value. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
Resolve-Path Risolve i caratteri jolly per un percorso di Windows PowerShell e le informazioni sul percorso dei flussi.Resolves the wildcards for a Windows PowerShell path, and streams path information.
Test-Path Verifica il percorso specificato e restituisce true se esiste e false in caso contrario.Tests for the specified path, and returns true if it exists and false otherwise. Questo cmdlet viene implementato per supportare il IsContainer parametro per il metodo System. Management. Automation. provider. CmdletProvider. Writeitemobject * .This cmdlet is implemented to support the IsContainer parameter for the System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* method.

Classe di base ContainerCmdletProviderContainerCmdletProvider Base Class

La classe System. Management. Automation. provider. Containercmdletprovider definisce un provider di contenitori di Windows PowerShell che espone all'utente un contenitore, per gli elementi dell'archivio dati.The System.Management.Automation.Provider.Containercmdletprovider class defines a Windows PowerShell container provider that exposes a container, for data store items, to the user. Tenere presente che un provider di contenitori di Windows PowerShell può essere utilizzato solo quando è presente un contenitore (nessun contenitore annidato) con elementi.Be aware that a Windows PowerShell container provider can be used only when there is one container (no nested containers) with items in it. Se sono presenti contenitori annidati, è necessario implementare un provider di navigazione di Windows PowerShell.If there are nested containers, then you must implement a Windows PowerShell navigation provider .

Questa classe deriva dalla classe di base System. Management. Automation. provider. Itemcmdletprovider .This class derives from the System.Management.Automation.Provider.Itemcmdletprovider base class. Nella tabella seguente vengono definiti i cmdlet implementati da questa classe.The following table defines the cmdlets implemented by this class.

CmdletCmdlet DefinizioneDefinition
Copy-Item Copia gli elementi da una posizione a un'altra.Copies items from one location to another. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
Get-Childitem Recupera gli elementi figlio nel percorso specificato e li trasmette come oggetti.Retrieves the child items at the specified location, and streams them as objects.
New-Item Crea nuovi elementi in corrispondenza della posizione specificata e trasmette l'oggetto risultante.Creates new items at the specified location, and streams the resultant object.
Remove-Item Rimuove gli elementi dalla posizione specificata.Removes items from the specified location.
Rename-Item Rinomina un elemento nella posizione specificata.Renames an item at the specified location. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.

La classe System. Management. Automation. provider. Navigationcmdletprovider definisce un provider di navigazione di Windows PowerShell che esegue operazioni per gli elementi che usano più di un contenitore.The System.Management.Automation.Provider.Navigationcmdletprovider class defines a Windows PowerShell navigation provider that performs operations for items that use more than one container. Questa classe deriva dalla classe di base System. Management. Automation. provider. Containercmdletprovider .This class derives from the System.Management.Automation.Provider.Containercmdletprovider base class. Nella tabella seguente sono elencati i cmdlet esposti da questa classe.The following table list the cmdlets exposed by this class.

CmdletCmdlet DefinizioneDefinition
Combine-PathCombine-Path Combina due percorsi in un singolo percorso, usando un delimitatore specifico del provider tra i percorsi.Combines two paths into a single path, using a provider-specific delimiter between paths. Questo cmdlet trasmette le stringhe.This cmdlet streams strings.
Move-Item Sposta gli elementi nel percorso specificato.Moves items to the specified location. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.

Un cmdlet correlato è il cmdlet di base Parse-Path fornito da Windows PowerShell.A related cmdlet is the basic Parse-Path cmdlet furnished by Windows PowerShell. Questo cmdlet può essere utilizzato per analizzare un percorso di Windows PowerShell per supportare il Parent parametro.This cmdlet can be used to parse a Windows PowerShell path to support the Parent parameter. Trasmette la stringa del percorso padre.It streams the parent path string.

Selezionare le interfacce del provider da supportareSelect Provider Interfaces to Support

Oltre a derivare da una delle classi di base di Windows PowerShell, il provider di Windows PowerShell può supportare altre funzionalità derivando da una o più delle seguenti interfacce del provider.In addition to deriving from one of the Windows PowerShell base classes, your Windows PowerShell provider can support other functionality by deriving from one or more of the following provider interfaces. Questa sezione definisce le interfacce e i cmdlet supportati da ciascuno di essi.This section defines those interfaces and the cmdlets supported by each. Non vengono descritti i parametri per i cmdlet supportati dall'interfaccia.It does not describe the parameters for the interface-supported cmdlets. Le informazioni sui parametri dei cmdlet sono disponibili online usando i Get-Command Get-Help cmdlet e.Cmdlet parameter information is available online using the Get-Command and Get-Help cmdlets.

IContentCmdletProviderIContentCmdletProvider

L'interfaccia System. Management. Automation. provider. Icontentcmdletprovider definisce un provider di contenuti che esegue operazioni sul contenuto di un elemento di dati.The System.Management.Automation.Provider.Icontentcmdletprovider interface defines a content provider that performs operations on the content of a data item. Nella tabella seguente sono elencati i cmdlet esposti da questa interfaccia.The following table lists the cmdlets exposed by this interface.

CmdletCmdlet DefinizioneDefinition
Add-Content Aggiunge le lunghezze di valore indicate al contenuto dell'elemento specificato.Appends the indicated value lengths to the contents of the specified item. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
Clear-Content Imposta il contenuto dell'elemento specificato sul valore "Clear".Sets the content of the specified item to the "clear" value. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
Get-Content Recupera il contenuto degli elementi specificati e trasmette i flussi degli oggetti risultanti.Retrieves the contents of the specified items and streams the resultant objects.
Set-Content Sostituisce il contenuto esistente per gli elementi specificati.Replaces the existing content for the specified items. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.

IPropertyCmdletProviderIPropertyCmdletProvider

L'interfaccia System. Management. Automation. provider. Ipropertycmdletprovider definisce un provider di proprietà di Windows PowerShell che esegue operazioni sulle proprietà degli elementi nell'archivio dati.The System.Management.Automation.Provider.Ipropertycmdletprovider interface defines a property Windows PowerShell provider that performs operations on the properties of items in the data store. Nella tabella seguente sono elencati i cmdlet esposti da questa interfaccia.The following table lists the cmdlets exposed by this interface.

Nota

Il Path parametro di questi cmdlet indica il percorso di un elemento anziché l'identificazione di una proprietà.The Path parameter on these cmdlets indicates a path to an item instead of identifying a property.

CmdletCmdlet DefinizioneDefinition
Clear-ItemProperty Imposta le proprietà degli elementi specificati sul valore "Clear".Sets properties of the specified items to the "clear" value. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
Get-ItemProperty Recupera le proprietà dagli elementi specificati e trasmette gli oggetti risultanti.Retrieves properties from the specified items and streams the resultant objects.
Set-ItemProperty Imposta le proprietà degli elementi specificati con i valori indicati.Sets properties of the specified items with the indicated values. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.

IDynamicPropertyCmdletProviderIDynamicPropertyCmdletProvider

L'interfaccia System. Management. Automation. provider. Idynamicpropertycmdletprovider , derivata da System. Management. Automation. provider. Ipropertycmdletprovider, definisce un provider che specifica i parametri dinamici per i cmdlet supportati.The System.Management.Automation.Provider.Idynamicpropertycmdletprovider interface, derived from System.Management.Automation.Provider.Ipropertycmdletprovider, defines a provider that specifies dynamic parameters for its supported cmdlets. Questo tipo di provider gestisce le operazioni per le quali è possibile definire le proprietà in fase di esecuzione, ad esempio una nuova operazione della proprietà.This type of provider handles operations for which properties can be defined at run time, for example, a new property operation. Queste operazioni non sono possibili per gli elementi con proprietà definite in modo statico.Such operations are not possible on items having statically defined properties. Nella tabella seguente sono elencati i cmdlet esposti da questa interfaccia.The following table lists the cmdlets exposed by this interface.

CmdletCmdlet DefinizioneDefinition
Copy-ItemProperty Copia una proprietà dall'elemento specificato a un altro elemento.Copies a property from the specified item to another item. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
Move-ItemProperty Sposta una proprietà dall'elemento specificato a un altro elemento.Moves a property from the specified item to another item. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.
New-ItemProperty Crea una proprietà sugli elementi specificati e trasmette gli oggetti risultanti.Creates a property on the specified items and streams the resultant objects.
Remove-ItemProperty Rimuove una proprietà per gli elementi specificati.Removes a property for the specified items.
Rename-ItemProperty Rinomina una proprietà degli elementi specificati.Renames a property of the specified items. Questo cmdlet non passa un oggetto di output attraverso la pipeline, a meno che non PassThru sia specificato il relativo parametro.This cmdlet does not pass an output object through the pipeline unless its PassThru parameter is specified.

ISecurityDescriptorCmdletProviderISecurityDescriptorCmdletProvider

L'interfaccia System. Management. Automation. provider. Isecuritydescriptorcmdletprovider aggiunge la funzionalità del descrittore di sicurezza a un provider.The System.Management.Automation.Provider.Isecuritydescriptorcmdletprovider interface adds security descriptor functionality to a provider. Questa interfaccia consente all'utente di ottenere e impostare le informazioni sul descrittore di sicurezza per un elemento nell'archivio dati.This interface allows the user to get and set security descriptor information for an item in the data store. Nella tabella seguente sono elencati i cmdlet esposti da questa interfaccia.The following table lists the cmdlets exposed by this interface.

CmdletCmdlet DefinizioneDefinition
Get-Acl Recupera le informazioni contenute in un elenco di controllo di accesso (ACL), che fa parte di un descrittore di sicurezza utilizzato per proteggere le risorse del sistema operativo, ad esempio un file o un oggetto.Retrieves the information contained in an access control list (ACL), which is part of a security descriptor used to guard operating system resources, for example, a file or an object.
Set-Acl Imposta le informazioni per un ACL.Sets the information for an ACL. È nel formato di un'istanza di System. Security. AccessControl. ObjectSecurity negli elementi designati per il percorso specificato.It is in the form of an instance of System.Security.Accesscontrol.Objectsecurity on the item(s) designated for the specified path. Questo cmdlet può impostare informazioni su file, chiavi e sottochiavi nel registro di sistema o qualsiasi altro elemento del provider se il provider di Windows PowerShell supporta l'impostazione delle informazioni di sicurezza.This cmdlet can set information about files, keys, and subkeys in the registry, or any other provider item, if the Windows PowerShell provider supports the setting of security information.

Vedere ancheSee Also

Creazione di provider di Windows PowerShellCreating Windows PowerShell Providers

Funzionamento di Windows PowerShellHow Windows PowerShell Works

Windows PowerShell SDKWindows PowerShell SDK