Condividi tramite


about_Providers

Breve descrizione

Descrive in che modo i provider di PowerShell forniscono l'accesso ai dati e ai componenti che altrimenti non sarebbero facilmente accessibili dalla riga di comando. I dati vengono presentati in un formato coerente simile a un'unità del file system.

Descrizione lunga

I provider di PowerShell sono programmi .NET che consentono l'accesso a archivi dati specializzati per semplificare la visualizzazione e la gestione. I dati sono visualizzati in un'unità e si accede ai dati in un percorso come si farebbe su un'unità disco rigido. È possibile usare uno dei cmdlet predefiniti supportati dal provider per gestire i dati nell'unità del provider. È anche possibile usare cmdlet personalizzati progettati appositamente per i dati.

I provider possono anche aggiungere parametri dinamici ai cmdlet predefiniti. Questi parametri sono disponibili solo quando si usa il cmdlet con i dati del provider.

Provider predefiniti

PowerShell include un set di provider predefiniti che forniscono l'accesso a diversi tipi di oggetti.

  • provider di alias
    • Unità - Alias:
    • Tipi di oggetto : System.Management.Automation.AliasInfo
  • provider di certificati
    • Unità - Cert:
    • Tipi di oggetto : Microsoft.PowerShell.Commands.X509StoreLocation, System.Security.Cryptography.X509Certificates.X509Certificate2
  • provider di environment
    • Unità - Env:
    • Tipi di oggetto : System.Collections.DictionaryEntry
  • provider di FileSystem
    • Unità - C: e altro a seconda dell'hardware
    • Tipi di oggetto : System.IO.FileInfo, System.IO.DirectoryInfo
  • Provider di funzione
    • Unità - Function:
    • Tipi di oggetto : System.Management.Automation.FunctionInfo
  • provider di del Registro di sistema
    • Unità - HKLM:, HKCU:
    • Tipi di oggetto : Microsoft.Win32.RegistryKey
  • provider di variabili
    • Unità - Variable:
    • Tipi di oggetto : System.Management.Automation.PSVariable
  • provider di WSMan
    • Unità - WSMan:
    • Tipi di oggetto : Microsoft.WSMan.Management.WSManConfigContainerElement

È anche possibile creare provider di PowerShell personalizzati ed è possibile installare provider sviluppati da altri utenti. Per elencare i provider disponibili nella sessione, digitare:

Get-PSProvider

Nota

I provider di certificato, registro di sistemae WSMan sono disponibili solo nella piattaforma Windows.

Installazione e rimozione di provider

I provider vengono in genere installati tramite moduli di PowerShell. L'importazione del modulo carica il provider nella sessione. Non è possibile disinstallare i provider predefiniti. È possibile disinstallare i provider caricati da altri moduli.

È possibile scaricare un provider dalla sessione corrente usando il cmdlet Remove-Module. Questo cmdlet non disinstalla il provider, ma rende il provider non disponibile nella sessione.

È anche possibile usare il cmdlet Remove-PSDrive per rimuovere qualsiasi unità dalla sessione corrente. Questi dati sull'unità non sono interessati, ma l'unità non è più disponibile in tale sessione.

Visualizzazione dei provider

Per visualizzare i provider di PowerShell nel computer, digitare:

Get-PSProvider

L'output elenca i provider predefiniti e i provider aggiunti alla sessione.

Cmdlet del provider

I cmdlet seguenti sono progettati per lavorare con i dati esposti da qualsiasi provider. È possibile usare gli stessi cmdlet nello stesso modo per gestire i diversi tipi di dati esposti dai provider. Dopo aver appreso come gestire i dati di un provider, è possibile usare le stesse procedure con i dati di qualsiasi provider.

Ad esempio, il cmdlet New-Item crea un nuovo elemento. Nell'unità C: supportata dal provider di FileSystem è possibile usare New-Item per creare un nuovo file o una nuova cartella. Nelle unità supportate dal provider di del Registro di sistema è possibile usare New-Item per creare una nuova chiave del Registro di sistema. Nell'unità Alias: è possibile usare New-Item per creare un nuovo alias.

Per informazioni dettagliate su uno dei cmdlet seguenti, digitare:

Get-Help <cmdlet-name> -Detailed

Cmdlet ChildItem

Cmdlet di contenuto

Cmdlet dell'elemento

  • cancella elementi
  • copy-item
  • Get-Item
  • Invoke-Item
  • move-item
  • nuovo elemento
  • Remove-Item
  • rename-item
  • set-item

Cmdlet ItemProperty

Cmdlet location

Cmdlet di percorso

  • join-path
  • Convert-Path
  • split-path
  • Resolve-Path
  • test-path

Cmdlet di PSDrive

Cmdlet PSProvider

Visualizzazione dei dati del provider

Il vantaggio principale di un provider è che espone i dati in modo familiare e coerente. Il modello per la presentazione dei dati è un'unità file system.

Il provider consente di visualizzare, esplorare e modificare gli elementi nell'archivio dati come se fossero dati in un file system. L'archivio dati è accessibile dal nome dell'unità supportata.

L'unità è elencata nella visualizzazione predefinita del cmdlet Get-PSProvider, ma è possibile ottenere informazioni sull'unità del provider usando il cmdlet Get-PSDrive. Ad esempio, per ottenere tutte le proprietà dell'unità Function: digitare:

Get-PSDrive Function | Format-List *

È possibile visualizzare e spostare i dati in un'unità del provider esattamente come si farebbe in un'unità file system.

Per visualizzare il contenuto di un'unità provider, usare i cmdlet Get-Item o Get-ChildItem. Digitare il nome dell'unità seguito da due punti (:). Ad esempio, per visualizzare il contenuto dell'unità Alias:, digitare:

Get-Item Alias:

È possibile visualizzare e gestire i dati in qualsiasi unità da un'altra unità includendo il nome dell'unità nel percorso. Ad esempio, per visualizzare la chiave del Registro di sistema HKLM\Software nell'unità HKLM: da un'altra unità, digitare:

Get-ChildItem HKLM:\SOFTWARE\

Per aprire l'unità, usare il cmdlet Set-Location. Tenere presente i due punti quando si specifica il percorso dell'unità. Ad esempio, per modificare il percorso nella directory radice dell'unità Cert:, digitare:

Set-Location Cert:

Quindi, per visualizzare il contenuto dell'unità Cert:, digitare:

Get-ChildItem

Spostamento tra dati gerarchici

È possibile spostarsi attraverso un'unità provider esattamente come si farebbe con un'unità disco rigido. Se i dati sono disposti in una gerarchia di elementi all'interno di elementi, usare una barra rovesciata (\) per indicare un elemento figlio. Usare il formato seguente:

drive:\location\child-location\...

Ad esempio, per modificare il percorso con la chiave del Registro di sistema HKLM\Software, digitare un comando Set-Location, ad esempio:

Set-Location HKLM:\SOFTWARE\

Se un elemento nel nome completo include spazi, è necessario racchiudere il nome tra virgolette doppie ("). Nell'esempio seguente viene illustrato un percorso completo che include spazi.

"C:\Program Files\Internet Explorer\iexplore.exe"

È anche possibile usare riferimenti relativi alle posizioni. Un punto (.) rappresenta la posizione corrente. Ad esempio, se ci si trova nella chiave del Registro di sistema HKLM:\Software\Microsoft e si desidera elencare le sottochiavi del Registro di sistema nella chiave HKLM:\Software\Microsoft\PowerShell, digitare il comando seguente:

Get-ChildItem .\PowerShell

Inoltre, i punti doppi (..) si riferiscono alla directory o al contenitore direttamente sopra la posizione corrente. È possibile usare punti doppi (..) per spostarsi in una gerarchia del provider.

PS HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\> cd ..\..\LanmanWorkstation\Parameters
PS HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters>

Casa del provider

I provider dispongono anche di una posizione home. Questa posizione è condivisa da tutti i PSDrives supportati dal provider. Può essere recuperato visualizzando la proprietà Home del provider.

Get-PSProvider | Format-Table Name, Home
Name        Home
----        ----
Registry
Alias
Environment
FileSystem  C:\Users\username
Function
Variable
Certificate

Il provider di FileSystem è l'unico provider con valore predefinito per Home. È lo stesso valore di $HOME. Per altre informazioni, vedere about_Automatic_Variables.

È possibile impostare la directory home per un provider, per la sessione corrente, usando la relativa proprietà .

(Get-PSProvider FileSystem).Home = "C:\"

Il carattere ~ può essere usato per rappresentare la home directory del provider. Se il provider non ha un percorso Home impostato, viene visualizzato un errore.

Cert:\> Set-Location ~
Set-Location : Home location for this provider isn't set. To set the home
location, call "(Get-PSProvider 'Certificate').Home = 'path'".
At line:1 char:1
+ Set-Location ~
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Set-Location],
                              PSInvalidOperationException
...

Ricerca di parametri dinamici

I parametri dinamici sono parametri cmdlet aggiunti a un cmdlet da un provider. Questi parametri sono disponibili solo quando il cmdlet viene usato con il provider che li ha aggiunti.

Ad esempio, l'unità Cert: aggiunge il parametro CodeSigningCert ai cmdlet Get-Item e Get-ChildItem. È possibile usare questo parametro solo quando si usano Get-Item o Get-ChildItem nell'unità Cert:.

Per un elenco dei parametri dinamici supportati da un provider, vedere il file della Guida per il provider. Digitare:

Get-Help <provider-name>

Per esempio:

Get-Help Certificate

Informazioni sui provider

Anche se tutti i dati del provider vengono visualizzati nelle unità e si usano gli stessi metodi per spostarsi tra di essi, la somiglianza si interrompe. Gli archivi dati esposti dal provider possono essere diversi come le posizioni di Active Directory e le cassette postali di Microsoft Exchange Server.

Per informazioni sui singoli provider di PowerShell, digitare:

Get-Help <ProviderName>

Per esempio:

Get-Help Registry

Per un elenco di argomenti della Guida sui provider, digitare:

Get-Help * -Category Provider

Vedere anche