Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo esempio si applica solo alle piattaforme Windows.
Dato che le chiavi del Registro di sistema sono elementi nelle unità PowerShell, il loro uso è molto simile a quello di file e cartelle. Una differenza fondamentale è che ogni elemento in un'unità PowerShell basata sul Registro di sistema è un contenitore, come una cartella in un'unità del file system. Tuttavia, le voci del Registro di sistema e i relativi valori associati sono proprietà degli elementi e non elementi distinti.
Elenco di tutte le sottochiavi di una chiave del Registro di sistema
È possibile visualizzare tutti gli elementi direttamente all'interno di una chiave del Registro di sistema usando Get-ChildItem. Aggiungere il parametro facoltativo Force per visualizzare elementi nascosti o di sistema. Questo comando, ad esempio, visualizza gli elementi direttamente all'interno dell'unità PowerShell HKCU:, che corrisponde all'hive del Registro di sistema HKEY_CURRENT_USER:
Get-ChildItem -Path HKCU:\ | Select-Object Name
Hive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Name
----
HKEY_CURRENT_USER\AppEvents
HKEY_CURRENT_USER\Console
HKEY_CURRENT_USER\Control Panel
HKEY_CURRENT_USER\DirectShow
HKEY_CURRENT_USER\dummy
HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\EUDC
HKEY_CURRENT_USER\Keyboard Layout
HKEY_CURRENT_USER\MediaFoundation
HKEY_CURRENT_USER\Microsoft
HKEY_CURRENT_USER\Network
HKEY_CURRENT_USER\Printers
HKEY_CURRENT_USER\Software
HKEY_CURRENT_USER\System
HKEY_CURRENT_USER\Uninstall
HKEY_CURRENT_USER\WXP
HKEY_CURRENT_USER\Volatile Environment
Queste sono le chiavi di primo livello visibili HKEY_CURRENT_USER in nell'editor del Registro di sistema (regedit.exe).
È possibile specificare questo percorso del Registro di sistema anche specificando il nome del provider del Registro di sistema, seguito da ::. Il nome completo del provider del Registro di sistema è Microsoft.PowerShell.Core\Registry, ma può essere abbreviato semplicemente in Registry. I comandi seguenti consentono di elencare il contenuto direttamente in HKCU:.
Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKCU
Get-ChildItem -Path Microsoft.PowerShell.Core\Registry::HKCU
Get-ChildItem HKCU:
Questi comandi elencano solo gli elementi contenuti direttamente, in modo analogo all'uso DIR in cmd.exe o ls in una shell UNIX. Per visualizzare gli elementi contenuti, è necessario specificare il parametro Recurse. Per elencare tutte le chiavi del Registro di sistema in HKCU:, usare il comando seguente.
Get-ChildItem -Path HKCU:\ -Recurse
Get-ChildItem consente di applicare funzionalità di filtro complesse tramite i parametri Path, Filter, Include ed Exclude, ma questi parametri sono solitamente basati solo sul nome. È possibile eseguire filtri complessi in base ad altre proprietà degli elementi usando il Where-Object cmdlet .
Il comando seguente consente di trovare tutte le chiavi all'interno di HKCU:\Software che hanno non più di una sottochiave e hanno inoltre esattamente quattro valori:
Get-ChildItem -Path HKCU:\Software -Recurse |
Where-Object {($_.SubKeyCount -le 1) -and ($_.ValueCount -eq 4) }
Copia delle chiavi
La copia viene eseguita con Copy-Item. Nell'esempio seguente viene copiata la sottochiave CurrentVersion di HKLM:\SOFTWARE\Microsoft\Windows\ e tutte le relative proprietà in HKCU:\.
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU:
Se si esamina questa nuova chiave nell'editor del Registro di sistema o si usa Get-ChildItem, si noti che non sono presenti copie delle sottochiavi contenute nel nuovo percorso. Per copiare tutto il contenuto di un contenitore, è necessario specificare il parametro Recurse. Per rendere ricorsivo il comando di copia precedente, è possibile usare questo comando:
Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination HKCU: -Recurse
Per eseguire copie nel file system, è comunque possibile continuare a usare altri strumenti già disponibili. Tutti gli strumenti di modifica del Registro di sistema, inclusi reg.exegli oggetti , regedit.exeregini.exe, e COM che supportano la modifica del Registro di sistema, ad esempio WScript.Shell e la classe StdRegProv di WMI, possono essere usati da PowerShell.
Creazione di chiavi
La creazione di nuove chiavi nel Registro di sistema è più semplice rispetto alla creazione di un nuovo elemento in un file system. Poiché tutte le chiavi del Registro di sistema sono contenitori, non è necessario specificare il tipo di elemento. Specificare semplicemente un percorso esplicito, ad esempio:
New-Item -Path HKCU:\Software_DeleteMe
Per specificare una chiave, è anche possibile usare un percorso basato su provider:
New-Item -Path Registry::HKCU\Software_DeleteMe
Eliminazione di chiavi
L'eliminazione di elementi è un'attività fondamentalmente identica per tutti i provider. I comandi seguenti rimuovono automaticamente gli elementi:
Remove-Item -Path HKCU:\Software_DeleteMe
Remove-Item -Path 'HKCU:\key with spaces in the name'
Rimozione di tutte le chiavi con una chiave specifica
È possibile rimuovere gli elementi contenuti tramite Remove-Item, ma verrà richiesto di confermare la rimozione se l'elemento ne contiene altri. Ad esempio, se si tenta di eliminare la sottochiave HKCU:\CurrentVersion creata, verrà visualizzato il messaggio seguente:
Remove-Item -Path HKCU:\CurrentVersion
Confirm
The item at HKCU:\CurrentVersion\AdminDebug 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 che venga richiesta la conferma dell'eliminazione, specificare il parametro Recurse:
Remove-Item -Path HKCU:\CurrentVersion -Recurse
Per rimuovere tutti gli elementi all'interno di HKCU:\CurrentVersion ma non lo stesso HKCU:\CurrentVersion, è invece possibile usare:
Remove-Item -Path HKCU:\CurrentVersion\* -Recurse