Poiché le voci del Registro di sistema sono proprietà delle chiavi e non possono pertanto essere visualizzate direttamente, è necessario adottare un approccio leggermente diverso per poterle utilizzare.

Visualizzazione dell'elenco delle voci del Registro di sistema

Sono disponibili molti modi diversi per esaminare le voci del Registro di sistema. Quello più semplice consiste nell'ottenere i nomi delle proprietà associate a una chiave. Ad esempio, per visualizzare i nomi delle voci della chiave del Registro di sistema HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion, utilizzare Get-Item. Le chiavi del Registro di sistema includono una proprietà caratterizzata dal nome generico "Property" che corrisponde a un elenco delle voci presenti nella chiave. Il comando seguente consente di selezionare la proprietà Property e di espandere gli elementi in modo che vengano visualizzati in un elenco:

PS> Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId

Per visualizzare le voci del Registro di sistema in un formato più leggibile, utilizzare Get-ItemProperty:

PS> Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion


PSPath              : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows\CurrentVersion
PSParentPath        : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows
PSChildName         : CurrentVersion
PSDrive             : HKLM
PSProvider          : Microsoft.PowerShell.Core\Registry
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
CommonFilesDir      : C:\Program Files\Common Files
ProductId           : 76487-338-1167776-22465
WallPaperDir        : C:\WINDOWS\Web\Wallpaper
MediaPath           : C:\WINDOWS\Media
ProgramFilesPath    : C:\Program Files
PF_AccessoriesName  : Accessories
(default)           :

Le proprietà della chiave correlate a Windows PowerShell sono tutte precedute dal prefisso "PS", ad esempio PSPath, PSParentPath, PSChildName e PSProvider.

È possibile utilizzare la notazione "." per fare riferimento al percorso corrente. È possibile utilizzare Set-Location per passare dapprima al contenitore del Registro di sistema CurrentVersion:

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

In alternativa, è possibile utilizzare la chiave HKLM PSDrive predefinita con Set-Location:

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

È quindi possibile utilizzare la notazione "." per il percorso corrente per visualizzare le proprietà senza specificare un percorso completo:

PS> Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...

Il processo di espansione del percorso è analogo a quello previsto nel file system, pertanto da questo percorso è possibile ottenere l'elenco di ItemProperty per HKLM:\SOFTWARE\Microsoft\Windows\Help utilizzando Get-ItemProperty -Path ..\Help.

Recupero di una singola voce del Registro di sistema

Se si desidera recuperare una voce specifica di una chiave del Registro di sistema, è possibile utilizzare uno dei diversi approcci possibili. In questo esempio il valore di DevicePath viene trovato in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.

Utilizzare Get-ItemProperty con il parametro Path per specificare il nome della chiave e con il parametro Name per specificare il nome della voce DevicePath.

PS> Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath


PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\
               Microsoft\Windows
PSChildName  : CurrentVersion
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry
DevicePath   : C:\WINDOWS\inf

Questo comando restituisce le proprietà standard di Windows PowerShell nonché la proprietà DevicePath.

Nota

Non è possibile utilizzare i parametri Filter, Include e Exclude di Get-ItemProperty per filtrare i risultati in base al nome della proprietà. Tali parametri fanno riferimento alle chiave del Registro di sistema, che sono percorsi degli elementi, non alle voci del Registro di sistema, che sono proprietà degli elementi.

Un altro modo consiste nell'utilizzare l'utilità della riga di comando Reg.exe. Per la Guida di Reg.exe, digitare reg.exe /? al prompt dei comandi. Per individuare la voce DevicePath, utilizzare Reg.exe come illustrato nel comando seguente:

PS> reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    DevicePath  REG_EXPAND_SZ   %SystemRoot%\inf

È inoltre possibile utilizzare l'oggetto WshShell COM per individuare alcune voci del Registro di sistema, sebbene questa soluzione non sia applicabile con grandi quantità di dati binari o con nomi di voci che includono caratteri quali "\". In tal caso accodare il nome della proprietà al percorso dell'elemento con un separatore \:

PS> (New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

Creazione di nuove voci del Registro di sistema

Per aggiungere una nuova voce denominata "PowerShellPath" alla chiave CurrentVersion, utilizzare New-ItemProperty con il percorso della chiave, il nome e il valore della voce. Per questo esempio verrà considerato il valore della variabile $PSHome di Windows PowerShell, in cui è archiviato il percorso della directory di installazione di Windows PowerShell.

Per aggiungere la nuova voce alla chiave, è possibile utilizzare il comando riportato di seguito che restituirà anche informazioni sulla nuova voce:

PS> New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome


PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows\CurrentVersion
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWAR
                 E\Microsoft\Windows
PSChildName    : CurrentVersion
PSDrive        : HKLM
PSProvider     : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0

PropertyType deve corrispondere al nome di un membro dell'enumerazione Microsoft.Win32.RegistryValueKind incluso nella tabella seguente:

Valore di PropertyType Significato

Binary

Dati binari

DWord

Numero che corrisponde a un UInt32 valido

ExpandString

Stringa che contiene variabili di ambiente espanse in modo dinamico

MultiString

Stringa multirighe

String

Qualsiasi valore di stringa

QWord

8 byte di dati binari

Nota

È possibile aggiungere una voce del Registro di sistema per più percorsi specificando una matrice di valori per il parametro Path:

New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome

È inoltre possibile sovrascrivere il valore di una voce del Registro di sistema preesistente aggiungendo il parametro Force a qualsiasi comando New-ItemProperty.

Ridenominazione di voci del Registro di sistema

Per rinominare la voce PowerShellPath in "PSHome", utilizzare Rename-ItemProperty:

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

Per visualizzare il valore rinominato, aggiungere il parametro PassThru al comando.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru

Eliminazione di voci del Registro di sistema

Per eliminare le voci del Registro di sistema PSHome e PowerShellPath, utilizzare Remove-ItemProperty:

Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath




Argomenti della Guida