about_Providers

Descrizione breve

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
    • Guida- Alias:
    • Tipi di oggetto - System.Management.Automation.AliasInfo
  • Provider di certificati
    • Guida- Cert:
    • Tipi di oggetto - Microsoft.PowerShell.Commands.X509StoreLocation, System.Security.Cryptography.X509Certificates.X509Certificate2
  • Provider di ambiente
    • Guida- Env:
    • Tipi di oggetto - System.Collections.DictionaryEntry
  • Provider FileSystem
    • Unità e C: altro a seconda dell'hardware
    • Tipi di oggetto - System.IO.FileInfo, System.IO.DirectoryInfo
  • Provider di funzioni
    • Guida- Function:
    • Tipi di oggetto - System.Management.Automation.FunctionInfo
  • Provider del Registro di sistema
    • Unità - HKLM:, HKCU:
    • Tipi di oggetto - Microsoft.Win32.RegistryKey
  • Provider di variabili
    • Guida- Variable:
    • Tipi di oggetto - System.Management.Automation.PSVariable
  • Provider WSMan
    • Guida- 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 Certificato, Registro di sistema e 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 Remove-Module cmdlet . Questo cmdlet non disinstalla il provider, ma rende il provider non disponibile nella sessione.

È anche possibile usare il Remove-PSDrive cmdlet 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 New-Item cmdlet crea un nuovo elemento. Nell'unità C: supportata dal provider FileSystem è possibile usare New-Item per creare un nuovo file o una nuova cartella. Nelle unità supportate dal provider 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

Cmdlet ItemProperty

Cmdlet location

Cmdlet di percorso

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 Get-PSProvider cmdlet, ma è possibile ottenere informazioni sull'unità del provider usando il Get-PSDrive cmdlet . 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à del provider, usare i Get-Item cmdlet 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 HKLM\Software chiave del Registro di sistema nell'unità HKLM: da un'altra unità, digitare:

Get-ChildItem HKLM:\SOFTWARE\

Per aprire l'unità, usare il Set-Location cmdlet . 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. Utilizzare il seguente formato:

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

Ad esempio, per modificare il percorso con la chiave del HKLM\Software Registro di sistema, digitare un Set-Location comando, 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 si è nella chiave del HKLM:\Software\Microsoft Registro di sistema e si desidera elencare le sottochiavi del Registro di sistema nella HKLM:\Software\Microsoft\PowerShell chiave, 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 i punti doppi (..) per spostarsi tra una gerarchia del provider.

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

Provider Home

I provider hanno anche una posizione home . Questo percorso è condiviso da tutti 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 FileSystem è l'unico provider con un valore predefinito per Home. È lo stesso valore di $HOME. Per altre informazioni, vedere about_Automatic_Variables.

È possibile impostare la home directory 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à aggiunge il parametro CodeSigningCert ai Get-Item cmdlet e Get-ChildItem .Cert: È possibile usare questo parametro solo quando si usa 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. Tipo:

Get-Help <provider-name>

Ad 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>

Ad esempio:

Get-Help registry

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

Get-Help * -Category Provider

Vedi anche