Condividi tramite


about_Registry_Provider

Nome provider

Registro

Unità

HKLM:, HKCU:

Funzionalità

ShouldProcess, UseTransactions

Descrizione breve

Fornisce l'accesso alle chiavi, alle voci e ai valori del Registro di sistema in PowerShell.

Descrizione dettagliata

Queste informazioni si applicano solo a PowerShell in esecuzione in Windows.

Il provider del Registro di sistema di PowerShell consente di ottenere, aggiungere, modificare, cancellare ed eliminare chiavi, voci e valori del Registro di sistema in PowerShell.

Le unità del Registro di sistema sono uno spazio dei nomi gerarchico contenente le chiavi e le sottochiavi del Registro di sistema nel computer. Le voci e i valori del Registro di sistema non sono componenti di tale gerarchia, ma sono proprietà di ogni chiave.

Il provider del Registro di sistema supporta i cmdlet seguenti, illustrati in questo articolo.

Tipi esposti da questo provider

Le chiavi del Registro di sistema sono rappresentate come istanze della classe Microsoft.Win32.RegistryKey . Le voci del Registro di sistema vengono rappresentate come istanze della classe PSCustomObject .

Il provider del Registro di sistema espone l'archivio dati come due unità predefinite. Il percorso del Registro di sistema HKEY_LOCAL_MACHINE viene mappato all'unità HKLM: e HKEY_CURRENT_U edizione Standard R viene mappato all'unitàHKCU:. Per usare il Registro di sistema, è possibile modificare il percorso dell'unità HKLM: usando il comando seguente.

Set-Location HKLM:

Per tornare in un'unità di file system, digitare il relativo nome. Ad esempio, digitare il comando seguente:

Set-Location C:

È anche possibile usare il provider del Registro di sistema da qualsiasi altra unità di PowerShell. Per fare riferimento a una chiave del Registro di sistema da un'altra posizione, usare il nome dell'unità (HKLM:, HKCU:) nel percorso. Utilizzare una barra rovesciata () o una barra (\/) per indicare un livello dell'unità del Registro di sistema.

PS C:\> cd HKLM:\Software

Nota

PowerShell usa gli alias per consentire un modo familiare per usare i percorsi del provider. I comandi come dir e sono ora alias per Get-ChildItem, cd è un alias per Set-Location ed pwd è un alias per Get-Location.ls

Questo ultimo esempio mostra un'altra sintassi di percorso che è possibile usare per spostarsi nel provider del Registro di sistema . Questa sintassi usa il nome del provider, seguito da due punti ::. Questa sintassi consente di usare il nome HIVE completo, anziché il nome HKLMdell'unità mappata.

cd "Registry::HKEY_LOCAL_MACHINE\Software"

Visualizzazione del contenuto delle chiavi del Registro di sistema

Il Registro di sistema è suddiviso in chiavi, sottochiavi e voci. Per altre informazioni sulla struttura del Registro di sistema, vedere Struttura del Registro di sistema.

In un'unità del Registro di sistema ogni chiave è un contenitore. Una chiave può contenere un numero qualsiasi di chiavi. Una chiave del Registro di sistema con una chiave padre è denominata sottochiave. È possibile usare Get-ChildItem per visualizzare le chiavi del Registro di sistema e Set-Location passare a un percorso di chiave.

I valori del Registro di sistema sono attributi di una chiave del Registro di sistema. Nell'unità del Registro di sistema vengono denominate Proprietà elemento. Una chiave del Registro di sistema può avere entrambe le chiavi figlio e le proprietà dell'elemento.

In questo esempio viene visualizzata la differenza tra Get-Item e Get-ChildItem . Quando si usa Get-Item nella chiave del Registro di sistema "Spooler", è possibile visualizzarne le proprietà.

Get-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services


Name        Property
----        --------
Spooler     DependOnService    : {RPCSS, http}
            Description        : @%systemroot%\system32\spoolsv.exe,-2
            DisplayName        : @%systemroot%\system32\spoolsv.exe,-1
            ErrorControl       : 1
            FailureActions     : {16, 14, 0, 0...}
            Group              : SpoolerGroup
            ImagePath          : C:\WINDOWS\System32\spoolsv.exe
            ObjectName         : LocalSystem
            RequiredPrivileges : {SeTcbPrivilege, SeImpersonatePrivilege, ...
            ServiceSidType     : 1
            Start              : 2
            Type               : 27

Ogni chiave del Registro di sistema può avere anche sottochiavi. Quando si usa Get-Item in una chiave del Registro di sistema, le sottochiavi non vengono visualizzate. Il Get-ChildItem cmdlet mostrerà gli elementi figlio della chiave "Spooler", incluse le proprietà di ogni sottochiave. Le proprietà delle chiavi padre non vengono visualizzate quando si usa Get-ChildItem.

Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler


Name             Property
----             --------
Performance      Close           : PerfClose
                 Collect         : PerfCollect
                 Collect Timeout : 2000
                 Library         : C:\Windows\System32\winspool.drv
                 Object List     : 1450
                 Open            : PerfOpen
                 Open Timeout    : 4000
Security         Security : {1, 0, 20, 128...}

Il Get-Item cmdlet può essere usato anche nel percorso corrente. Nell'esempio seguente viene visualizzata la chiave del Registro di sistema "Spooler" e vengono recuperate le proprietà dell'elemento. Il punto . viene usato per indicare la posizione corrente.

cd HKLM:\System\CurrentControlSet\Services\Spooler
Get-Item .
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Name             Property
----             --------
Spooler          DependOnService    : {RPCSS, http}
                 Description        : @%systemroot%\system32\spoolsv.exe,-2
...

Per altre informazioni sui cmdlet illustrati in questa sezione, vedere gli articoli seguenti.

-Get-Item -Get-ChildItem

Visualizzazione dei valori delle chiavi del Registro di sistema

I valori delle chiavi del Registro di sistema vengono archiviati come proprietà di ogni chiave del Registro di sistema. Il Get-ItemProperty cmdlet visualizza le proprietà della chiave del Registro di sistema usando il nome specificato. Il risultato è un PSCustomObject contenente le proprietà specificate.

Nell'esempio seguente viene utilizzato il Get-ItemProperty cmdlet per visualizzare tutte le proprietà. L'archiviazione dell'oggetto risultante in una variabile consente di accedere al valore della proprietà desiderato.

$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http

Se si specifica un valore per il -Name parametro, vengono selezionate le proprietà specificate e viene restituito PSCustomObject. Nell'esempio seguente viene illustrata la differenza nell'output quando si usa il -Name parametro .

Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem
BUILD                      : 17134.1
Installation Directory     : C:\WINDOWS\system32\WBEM
MOF Self-Install Directory : C:\WINDOWS\system32\WBEM\MOF
PSPath                     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath               : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName                : Wbem
PSDrive                    : HKLM
PSProvider                 : Microsoft.PowerShell.Core\Registry
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
BUILD        : 17134.1
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName  : Wbem
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

A partire da PowerShell 5.0, il Get-ItemPropertyValue cmdlet restituisce solo il valore della proprietà specificata.

Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1

Per altre informazioni sui cmdlet usati in questa sezione, vedere gli articoli seguenti.

Modifica dei valori delle chiavi del Registro di sistema

Il Set-ItemProperty cmdlet imposta gli attributi per le chiavi del Registro di sistema. Nell'esempio seguente viene Set-ItemProperty usato per modificare il tipo di avvio del servizio spooler in manuale. Nell'esempio il valore startType viene nuovamente impostato su Automatico usando il Set-Service cmdlet .

Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler Automatic
$path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
Set-ItemProperty -Path $path -Name Start -Value 3
Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler    Manual
Set-Service -Name Spooler -StartupType Automatic

Ogni chiave del Registro di sistema ha un valore predefinito . È possibile modificare il valore predefinito per una chiave del Registro di sistema con Set-Item o Set-ItemProperty.

Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"

Per altre informazioni sui cmdlet usati in questa sezione, vedere gli articoli seguenti.

Creazione di chiavi e valori del Registro di sistema

Il New-Item cmdlet creerà le chiavi del Registro di sistema con un nome specificato. È anche possibile usare la mkdir funzione , che chiama internamente il New-Item cmdlet .

mkdir ContosoCompany
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
ContosoCompany

È possibile usare il New-ItemProperty cmdlet per creare valori in una chiave del Registro di sistema specificata. Nell'esempio seguente viene creato un nuovo valore DWORD nella chiave del Registro di sistema ContosoCompany.

$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1

Nota

Esaminare la sezione parametri dinamici in questo articolo per altri valori di tipo consentiti.

Per informazioni dettagliate sull'utilizzo dei cmdlet, vedere New-ItemProperty.

Copia di chiavi e valori del Registro di sistema

Nel provider del Registro di sistema usare il Copy-Item cmdlet copia le chiavi e i valori del Registro di sistema. Usare il Copy-ItemProperty cmdlet per copiare solo i valori del Registro di sistema. Il comando seguente copia la chiave del Registro di sistema "Contoso" e le relative proprietà nel percorso specificato "HKLM:\Software\Fabrikam".

Copy-Item crea la chiave di destinazione, se non esiste. Se la chiave di destinazione esiste, Copy-Item crea un duplicato della chiave di origine come elemento figlio (sottochiave) della chiave di destinazione.

Copy-Item -Path  HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam

Il comando seguente usa il Copy-ItemProperty cmdlet per copiare il valore "Server" dalla chiave "Contoso" alla chiave "Fabrikam".

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server

Per altre informazioni sui cmdlet usati in questa sezione, vedere gli articoli seguenti.

Spostamento di chiavi e valori del Registro di sistema

I Move-Item cmdlet e Move-ItemProperty si comportano come le controparti "Copy". Se la destinazione esiste, Move-Item sposta la chiave di origine sotto la chiave di destinazione. Se la chiave di destinazione non esiste, la chiave di origine viene spostata nel percorso di destinazione.

Il comando seguente sposta la chiave "Contoso" nel percorso HKLM:\SOFTWARE\Fabrikam.

Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam

Questo comando sposta tutte le proprietà da HKLM:\SOFTWARE\ContosoCompany a HKLM:\SOFTWARE\Fabrikam.

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *

Per altre informazioni sui cmdlet usati in questa sezione, vedere gli articoli seguenti.

Ridenominazione di chiavi e valori del Registro di sistema

È possibile rinominare chiavi e valori del Registro di sistema esattamente come file e cartelle. Rename-Item rinomina le chiavi del Registro di sistema, mentre Rename-ItemProperty rinomina i valori del Registro di sistema.

$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam

Modifica dei descrittori di sicurezza

È possibile limitare l'accesso alle chiavi del Registro di sistema usando i Get-Acl cmdlet e Set-Acl . Nell'esempio seguente viene aggiunto un nuovo utente con controllo completo alla chiave del HKLM:\SOFTWARE\Contoso Registro di sistema.

$acl = Get-Acl -Path HKLM:\SOFTWARE\Contoso
$rule = New-Object System.Security.AccessControl.RegistryAccessRule `
("CONTOSO\jsmith", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path HKLM:\SOFTWARE\Contoso

Per altri esempi e dettagli sull'utilizzo dei cmdlet, vedere gli articoli seguenti.

Rimozione e cancellazione di chiavi e valori del Registro di sistema

È possibile rimuovere gli elementi contenuti tramite Remove-Item, ma verrà richiesto di confermare la rimozione se l'elemento ne contiene altri. Nell'esempio seguente viene eseguito un tentativo di eliminazione di una chiave HKLM:\SOFTWARE\Contoso.

dir HKLM:\SOFTWARE\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso

Name                           Property
----                           --------
ChildKey
Remove-Item -Path HKLM:\SOFTWARE\Contoso
Confirm
The item at HKLM:\SOFTWARE\Contoso has children and the -Recurse
parameter was not specified. If you continue, all children will be removed
with the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Per eliminare gli elementi contenuti senza richiedere conferma, specificare il -Recurse parametro .

Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse

Se si desidera rimuovere tutti gli elementi all'interno HKLM:\SOFTWARE\Contoso ma non HKLM:\SOFTWARE\Contoso in sé, utilizzare una barra \ rovesciata finale seguita da un carattere jolly.

Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse

Questo comando elimina il valore del Registro di sistema "ContosoTest" dalla chiave del HKLM:\SOFTWARE\Contoso Registro di sistema.

Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest

Clear-Item cancella tutti i valori del Registro di sistema per una chiave. Nell'esempio seguente vengono cancellati tutti i valori dalla chiave del HKLM:\SOFTWARE\Contoso Registro di sistema. Per cancellare solo una proprietà specifica, utilizzare Clear-ItemProperty.

Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name           Property
----           --------
Contoso        Server     : {a, b, c}
               HereString : {This is text which contains
               newlines. It also contains "quoted" strings}
               (default)  : 1
Clear-Item .\Contoso\
Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
Contoso

Per altri esempi e dettagli sull'utilizzo dei cmdlet, vedere gli articoli seguenti.

Parametri dinamici

I parametri dinamici sono parametri cmdlet aggiunti da un provider di PowerShell e sono disponibili solo quando il cmdlet viene usato nell'unità abilitata per il provider.

Digitare <Microsoft.Win32.RegistryValueKind>

Stabilisce o cambia il tipo di dati di un valore del Registro di sistema. Il valore predefinito è String (REG_SZ).

Questo parametro funziona come progettato nel cmdlet Set-ItemProperty . È disponibile anche nel cmdlet Set-Item nelle unità del Registro di sistema, ma non ha alcun effetto.

Valore Descrizione
String Specifica una stringa che termina con Null. Utilizzato per i valori REG_SZ.
ExpandString Specifica una stringa con terminazione Null che contiene unexpanded
riferimenti alle variabili di ambiente espanse quando
il valore viene recuperato. Utilizzato per i valori REG_EXPAND_SZ.
Binary Specifica dati binari in qualsiasi formato. Utilizzato per i valori REG_BINARY.
DWord Specifica un numero binario a 32 bit. Utilizzato per i valori REG_DWORD.
MultiString Specifica una matrice di stringhe con terminazione Null da
due caratteri Null. Utilizzato per i valori di REG_MULTI_SZ.
QWord Specifica un numero binario a 64 bit. Utilizzato per i valori REG_QWORD.
Unknown Indica un tipo di dati del Registro di sistema non supportato, ad esempio
REG_RESOURCE_LIST valori.

Cmdlet supportati

Uso della pipeline

I cmdlet del provider accettano l'input della pipeline. È possibile usare la pipeline per semplificare l'attività inviando i dati del provider da un cmdlet a un altro cmdlet del provider. Per altre informazioni su come usare la pipeline con i cmdlet del provider, vedere i riferimenti ai cmdlet forniti in questo articolo.

Visualizzazione delle informazioni della Guida

A partire da Windows PowerShell 3.0, è possibile ottenere argomenti della Guida personalizzati per i cmdlet del provider che ne illustrano il comportamento in un'unità di file system.

Per ottenere gli argomenti della Guida personalizzati per l'unità del file system, eseguire un Get-Help comando in un'unità del file system o usare il parametro Path per specificare un'unità del file system.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:

Vedi anche